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步;
如果是新建库,可以跳过备份数据库,导入数据库。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏