Mysql之多源复制
=============Mysql之多源复制================
步骤一、 配置第一台主服务器
1.主库1#GTID配置 数据库配置
server-id=1
log_bin=mysql-bin
log_slave_updates=1
gtid_mode=on
enforce_gtid_consistency=on
binlog_format=row
2.修改好配置文件,重启mysql服务
service mysqld restart
3.然后进入mysql 终端
mysql -uroot -p
4.创建一个允许从数据库来访问的用户账号(mysql中操作)
#创建账号
create user 'username'@'从机ip' identified by '123456';
#授权
grant privileges on *.* to 'username'@'从机ip' with grant option;
#刷新
FLUSH PRIVILEGES;
5.备份要同步的数据库【db1,db2】 【服务器执行】
mysqldump -uroot -p --master-data=2 --single-transaction --set-gtid-purged=OFF --databases --add-drop-database db1 db2 > db1.sql
步骤二、 配置第二台服务器
重复步骤一,注意server-id 跟第一台服务器不一样。
步骤三、配置从服务器
1.#GTID配置
server-id=126
log_bin=mysql-bin
log_slave_updates=1
gtid_mode=on
enforce_gtid_consistency=on
binlog_format=row
#多源复制从库配置
master_info_repository=table
relay_log_info_repository=table
2.修改好配置文件,重启mysql服务
service mysqld restart
3.导入数据库【步骤一,步骤二导出的数据库,上传到从服务器上】
mysql -uroot -p < db1.sql
mysql -uroot -p < db3.sql
4.然后进入mysql 终端【mysql终端内执行】
mysql> change master to MASTER_HOST='主机IP1', MASTER_USER='主机1创建的用户名', MASTER_PASSWORD='密码', MASTER_PORT=3306, master_auto_position=1 for CHANNEL '渠道名称1';
mysql> change master to MASTER_HOST='主机IP2', MASTER_USER='主机2创建的用户名', MASTER_PASSWORD='密码', MASTER_PORT=3306, master_auto_position=1 for CHANNEL '渠道名称2';
5.开启主从复制【mysql终端内执行】
start slave for channel '渠道名称1';
start slave for channel '渠道名称2';
6.查看主从状态【mysql终端内执行】
show slave status for channel '渠道名称1'\G;
show slave status for channel '渠道名称2'\G;
出现俩个yes,表示已经开始正常工作
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
注意
多个master上不能拥有相同的数据库名,否则在从库会出现数据覆盖的现象;
master1、master2——>slave复制账号要求不一致;
在从库需要设置参数将主从间复制信息记录到表中,见搭建步骤第3步;
如果是新建库,可以跳过备份数据库,导入数据库。