以往在使用mysql时用的多的是仅仅使用一个mysql schema,或者多个schema,但一般都是在同一个数据库实例中的,也就是同一个端口的。
mysql双机双向热备份中,机器甲上的myql schema(暂称为A)需要作为热备份(mysql replication)中的master节点,备份的mysql schema(暂称为B)则存在另一台机器乙上。那么双向热备中B也需要配置为master,A则配置为slave,说白了就是配置了两遍热备份,好,到这里机器甲的热备已经搞定了,再轮到乙。我们说到机器乙上也有一个mysql schema(C),也要配置为master,并且备份schema放在机器甲上,但问题来了:备份的mysql schema(B)刚才在配置热备时已经将mysql端口号与master
的角色绑定了,此时若配置C为master会将此前 配置B为master的操作覆盖掉;然后在机器甲上配置C的备份数据库(D)为master时,又会将 配置A为master的操作覆盖了。
那么在此过程中,配置schema A 和B的双向热备分别在两台机器上的默认端口3306上完成,而配置schema C和D的双向热备时,则需要分别在两台机器上不同的mysql实例中完成(端口号不同),下面对启动多个mysql实例进行说明。
[mysqld_multi] mysqld = /opt/mysql/server-5.6/bin/mysqld_safe #根据自己的mysql目录配置 mysqladmin = /opt/mysql/server-5.6/bin/mysqladmin [mysqld1] port = 3307 socket = /tmp/mysql.sock1 pid-file = /opt/mysql/server-5.6/data3307/cloud3.pid3 basedir=/opt/mysql/server-5.6 datadir=/opt/mysql/server-5.6/data3307 log-bin=mysql1-9003-bin user=cloud1 [mysqld2] port = 3308 socket = /tmp/mysql.sock2 pid-file = /opt/mysql/server-5.6/data3308/cloud3.pid2 basedir=/opt/mysql/server-5.6 datadir=/opt/mysql/server-5.6/data3308 log-bin=mysql2-9003-bin user=cloud1
cd /opt/mysql/server-5.6/;./scripts/mysql_install_db --datadir=/opt/mysql/server-5.6/data3307 --user=cloud1 cd /opt/mysql/server-5.6/;./scripts/mysql_install_db --datadir=/opt/mysql/server-5.6/data3308 --user=cloud1
初始话成功,会提示OK,否则查看数据库目录是否有权限。
使用如下参数来启动mysqld_multi: (注:该命令在mysql的bin目录中 ) 。
mysqld_multi [options] [GNR[,GNR]...]
start,stop和report是指你想到执行的操作。你可以在单独的服务或是多服务上指定一个操作,区别于选项后面的GNR列表。如果没有指定GNR列表,那么mysqld_multi将在所有的服务中根据选项文件进行操作。
每一个GNR的值是组的序列号或是一个组的序列号范围。此项的值必须是组名字最后的数字,比如说如果组名为mysqld17,那么此项的值则为 17。如果指定一个范围,使用"-"(破折号)来连接二个数字。如GNR的值为10-13,则指组mysqld10到组mysqld13。
mysqld_multi --defaults-file=/opt/mysql/server-5.6/my.cnf start 1-2 或者 mysqld_multi --defaults-file=/opt/mysql/server-5.6/my.cnf start 1 mysqld_multi --defaults-file=/opt/mysql/server-5.6/my.cnf start 2
mysqladmin -u root -p -P 3307 -S /tmp/mysql.sock1 password //刚开始默认没有密码,如果要输入密码,直接回车 mysql -u root -p -P 3307 -S /tmp/mysql.sock1