MySql 主从复制
一、环境准备
系统:CentOS 6.5
防火墙已关闭:service iptables stop
MySql:已安装配置MySql 具体方法:MySQL手动安装方法:点击查看
主从服务器:
192.168.244.11 node1 主
192.168.244.12 node2 从
二、配置主 从服务器的MySql配置文件
1、主节点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $ vim /etc/my .cnf [mysqld] #设置不同的id 主节点和从节点的不能一样 server- id =11 #启用二进制日志(主节点必须,从节点非必须) log-bin=master-bin sync_binlog=1 #注意:下面这个参数需要修改为服务器内存的70%左右 innodb_buffer_pool_size= 512M innodb_flush_log_at_trx_commit=1 sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO #设置大小写不敏感 lower_case_table_names=1 log_bin_trust_function_creators=1 #不需要同步的库 replicate-ignore-db=mysql,information_schema,db3 #需要记录二进制日志的数据库 binlog- do -db=db1,db2 #不需要记录日志的数据库 binlog-ignore-db=mysql #需要同步的数据库 replicate- do -db=db1 #默认值3600s slave-net-timeout=60 |
2、从节点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $ vim /etc/my .cnf [mysqld] #设置不同的id 主节点和从节点的不能一样 server- id =12 #启用二进制日志(主节点必须,从节点非必须) log-bin=master-bin sync_binlog=1 #注意:下面这个参数需要修改为服务器内存的70%左右 innodb_buffer_pool_size= 512M innodb_flush_log_at_trx_commit=1 sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO #设置大小写不敏感 lower_case_table_names=1 log_bin_trust_function_creators=1 #不需要同步的库 replicate-ignore-db=mysql,information_schema,db3 #需要记录二进制日志的数据库 binlog- do -db=db1,db2 #不需要记录日志的数据库 binlog-ignore-db=mysql #需要同步的数据库 replicate- do -db=db1 #默认值3600s slave-net-timeout=60 |
配置完成以后重启两台节点的MySql
binlog-do-db=mysql1 #需要备份的数据库名,如果备份多个数据库,重复设置这个选项 即可
binlog-ignore-db=mysql2 #不需要备份的数据库名,如果备份多个数据库,重复设置这 个选项即可
log-slave-updates=1 #这个参数一定要加上,否则不会给更新的记录些到二进制文件 里
slave-skip-errors=1 #是跳过错误,继续执行复制操作(可选)
三、指定同步位置
1、首先分别在主节点和从节点上锁定表
1 2 3 4 5 6 7 8 9 | mysql> flush tables with read lock; Query OK, 0 rows affected (0.00 sec) mysql> show master status ; +-------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +-------------------+----------+--------------+------------------+ | master-bin.000001 | 106 | db1 | mysql | +-------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) |
记录在上面查询状态中的File和Position
2、然后在主节点和从节点上指定同步位置
1 2 | mysql> change master to master_host= '192.168.244.11' ,master_user= 'root' ,master_password= '111111' ,master_log_file='master-bin.000 001',master_log_pos=106;Query OK, 0 rows affected (0.04 sec) |
3、解锁主从节点
1 2 | mysql> unlock tables; Query OK, 0 rows affected (0.00 sec) |
4、启动从节点并查看从节点的状态
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | mysql> start slave; Query OK, 0 rows affected (0.00 sec) mysql> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.244.11 Master_User: root Master_Port: 3306 Connect_Retry: 60 Master_Log_File: master-bin.000001 Read_Master_Log_Pos: 106 Relay_Log_File: mysqld-relay-bin.000002 Relay_Log_Pos: 252 Relay_Master_Log_File: master-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: db1 Replicate_Ignore_DB: mysql,information_schema,db3 # 如果 Slave_IO_Running 和 Slave_SQL_Running状态都是Yes那说明配置成功了 |
注:要同步的数据库必须在从节点上存在!
四、牛刀小试
在主节点上插入一条数据以后,再到从节点上查看就会发现数据已经同步到了节点从节点上。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | -- 主节点 mysql> insert into tb_test values (1, 'tom' ); Query OK, 1 row affected (0.01 sec) mysql> select * from tb_test; + ------+------+ | id | name | + ------+------+ | 1 | tom | + ------+------+ 1 row in set (0.00 sec) -- 从节点 mysql> select * from tb_test; + ------+------+ | id | name | + ------+------+ | 1 | tom | + ------+------+ 1 row in set (0.00 sec) |
而没有设置同步的数据库,则没有同步数据。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 手把手教你更优雅的享受 DeepSeek
· AI工具推荐:领先的开源 AI 代码助手——Continue
· 探秘Transformer系列之(2)---总体架构
· V-Control:一个基于 .NET MAUI 的开箱即用的UI组件库
· 乌龟冬眠箱湿度监控系统和AI辅助建议功能的实现