MYSQL数据库多实例的安装配置mysql_multi启停实战-创新互联

一、多实例的应用场景:

成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、做网站、外贸营销网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的拱墅网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

1、资金紧张型公司的选择

当公司业务访问量不太大,又舍不得花钱,但同时又希望不同业务的数据库服务各自独立,而且需要主从同步进行等技术提供备份或读写分离服务时,使用多实例是最好不过的。

2、并发访问不是特别大的业务

当公司业务访问量不太大,服务器资源基本闲置的比较多,这是就很适合多实例的应用。如果对SQL语句优化的好,多实例是一个很值得使用的技术。即使并发很大,只要合理分配好系统资源,也不会有太大问题。

二、mysql多实例的原理

mysql多实例,简单的说,就是在一台服务器上开启多个不同的mysql服务端口(如3306,3307),运行多个mysql服务进程。这些服务进程通过不同的socket监听不同的服务端口,来提供各自的服务。

这些mysql实例共用一套mysql安装程序,使用不同的my.cnf配置文件、启动程序、数据文件。在提供服务时,mysql多实例在逻辑上看来是各自独立的,各个实例之间根据配置文件的设定值,来取得服务器的相关硬件资源。

三、多实例部署步骤

在这里数据库的编译安装就不赘述了,如有不清楚的,请参考其他文件。

实验使用的端口:33064,33065

1、创建数据目录

创建数据文件存放目录,并修改文件夹的所属用户组

mkdir -p /home/mysqldata/33064

mkdir -p /home/mysqldata/33065

chown mysql.mysql 33064/33065/

2、初始化数据库:

/usr/bin/mysql_install_db\

--datadir=/home/mysqldata/33064/\

--user=mysql

/usr/bin/mysql_install_db\

--datadir=/home/mysqldata/33065/\

--user=mysql

3、配置/etc/my.cnf配置文件

每一个实例都有一个属于实例自己的msyqld模块,模块中是实例对应的初始化参数,例如[mysqld33064],[mysqld33065]

[root@model /]# cat /etc/my.cnf

[mysqld_multi]

mysqld=/usr/bin/mysqld_safe

mysqladmin=/usr/bin/mysqladmin

user=mysql

password=mysql

[mysqld33064]

datadir=/home/mysqldata/33064

port=33064

socket=/home/mysqldata/33064/mysql33064.sock

user=mysql

symbolic-links=0

default-storage-engine=INNODB

log-bin = mysql-bin

binlog_format = mixed

expire_logs_days = 7

## utf8

#default-character-set = utf8

#character_set_connection = utf8

#character_set_results = utf8

character-set-server = utf8

collation-server = utf8_general_ci

init_connect = 'SET collation_connection =utf8_general_ci '

init_connect = 'SET NAMES utf8'

server-id = 1

[mysqld33065]

datadir=/home/mysqldata/33065

port=33065

socket=/home/mysqldata/33065/mysql33065.sock

user=mysql

symbolic-links=0

default-storage-engine=INNODB

log-bin = mysql-bin

binlog_format = mixed

expire_logs_days = 7

## utf8

#default-character-set = utf8

#character_set_connection = utf8

#character_set_results = utf8

character-set-server = utf8

collation-server = utf8_general_ci

init_connect = 'SET collation_connection =utf8_general_ci '

init_connect = 'SET NAMES utf8'

server-id = 1

[mysqld_safe]

#log=/var/log/mysqldquery.log

## error log

log-error=/var/log/mysqld.log

#pid-file=/var/run/mysqld/mysqld.pid

4、多实例的启动和停止

启动的时候要用mysqld_multi 命令,而不是mysqld命令,命令通过传递不同的端口参数来启动对应额数据库实例.

/usr/bin/mysqld_multi  --defaults-file=/etc/my.cnf start 33064

/usr/bin/mysqld_multi --defaults-file=/etc/my.cnf  start 33065

/usr/bin/mysqld_multi --defaults-file=/etc/my.cnf stop 33064

/usr/bin/mysqld_multi --defaults-file=/etc/my.cnf stop  33065

查看数据库进程情况,如果有两个数据库进程说明数据库安装正常,否则失败,具体原因需要查看log日志来处理。

[root@model mysql]# ps -ef|grep mysql

root    3990   1  0 11:18 pts/0   00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/home/mysqldata/33065 --port=33065 --socket=/home/mysqldata/33065/mysql33065.sock --user=mysql --symbolic-links=0 --default-storage-engine=INNODB --log-bin=mysql-bin --binlog_format=mixed --expire_logs_days=7 --character-set-server=utf8 --collation-server=utf8_general_ci --init_connect=SET collation_connection = utf8_general_ci  --init_connect=SET NAMES utf8 --server-id=1

mysql   4132  3990  0 11:18 pts/0   00:00:01 /usr/libexec/mysqld --basedir=/usr --datadir=/home/mysqldata/33065 --user=mysql --symbolic-links=0 --default-storage-engine=INNODB --log-bin=mysql-bin --binlog_format=mixed --expire_logs_days=7 --character-set-server=utf8 --collation-server=utf8_general_ci --init_connect=SET collation_connection = utf8_general_ci  --init_connect=SET NAMES utf8 --server-id=1 --log-error=/var/log/mysqld.log --pid-file=/home/mysqldata/33065/model.pid --socket=/home/mysqldata/33065/mysql33065.sock --port=33065

root    4155   1  0 11:18 pts/0   00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/home/mysqldata/33064 --port=33064 --socket=/home/mysqldata/33064/mysql33064.sock --user=mysql --symbolic-links=0 --default-storage-engine=INNODB --log-bin=mysql-bin --binlog_format=mixed --expire_logs_days=7 --character-set-server=utf8 --collation-server=utf8_general_ci --init_connect=SET collation_connection = utf8_general_ci  --init_connect=SET NAMES utf8 --server-id=1

mysql   4297  4155  0 11:18 pts/0   00:00:01 /usr/libexec/mysqld --basedir=/usr --datadir=/home/mysqldata/33064 --user=mysql --symbolic-links=0 --default-storage-engine=INNODB --log-bin=mysql-bin --binlog_format=mixed --expire_logs_days=7 --character-set-server=utf8 --collation-server=utf8_general_ci --init_connect=SET collation_connection = utf8_general_ci  --init_connect=SET NAMES utf8 --server-id=1 --log-error=/var/log/mysqld.log --pid-file=/home/mysqldata/33064/model.pid --socket=/home/mysqldata/33064/mysql33064.sock --port=33064

5、多实例的连接登录

mysql -S /home/mysqldata/33064/mysql33064.sock

mysql -S /home/mysqldata/33065/mysql33065.sock

6、赋权限

刚安装好的数据库root用户无localhost登录权限,所以需要赋权限以后才能通过用户名和密码登录。

mysql -S /home/mysqldata/33064/mysql33064.sock

mysql>grant allon *.* to 'root'@'%' identified by 'root';

mysql>grant allon *.* to 'root'@'localhost' identified by 'root';

mysql> flushprivileges;

 7、通过用户名和密码登录

mysql -uroot -proot -S /home/mysqldata/33064/mysql33064.sock

8、多实例修改密码

修改实例33064的root密码,使用mysqladmin命令。如下:

mysqladmin -uroot -p password root-S /home/mysqldata/33064/mysql33064.sock

到此我们的mysql多实例部署就已经完成。

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章名称:MYSQL数据库多实例的安装配置mysql_multi启停实战-创新互联
当前网址:http://hbruida.cn/article/cspeoe.html