一、使用环境
服务器 | IP | 操作系统 | 主从关系 |
---|---|---|---|
mysql5.7 | 10.111.7.75 | centos7 | 主 |
mysql5.7 | 10.111.7.76 | centos7 | 从 |
二、实验原理
Mysql Replication,其实我并不想在这里介绍 它是什么,以后有机会再写。主要是实现数据库的主从同步。
三、环境搭建
1、首先要搭建两台mysql的服务环境。安装过程就不细说了
2、主服务器配置
2.1、修改my.cnf文件
# 启用二进制日志
log-bin=mysql-bin-master
# 本机数据库 ID 标示,主从配置中ID要唯一
server-id=1
# 可以被从服务器复制的库, 二进制需要同步的数据库名
binlog-do-db=db1,db2
以上的配置中如文件中没有,则直接新建即可!
修改完成后,重启Mysql.
2.2、在主数据库中授权同步
mysql>grant replication slave on *.* to slave@10.111.7.76 identified by "123456"; #ip地址为从库的IP
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> show master status; #查看状态信息
+-------------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------------+----------+--------------+------------------+-------------------+
| mysql-bin-master.000001 | 440 | db1,db2 | | |
+-------------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
2.3、授权完成后,先备份主库数据 到 从库中,保证两库的数据一致,可以使用命令从主库导出,再导入从库,也可直接使用工具如:navicat的数据传输等。
3、从服务器配置(10.111.7.76)
3.1、修改从服务器配置文件(my.cnf)
# 从服务器没必要开启bin-log日志,
# 从服务器ID号,不要和主ID相同,
# 如果设置多个从服务器,每个从服务器必须有一个唯一的server-id值,
# 必须与主服务器的以及其它从服务器的不相同。
# 可以认为 server-id值类似于IP地址:这些ID值能唯一识别复制服务器群集中的每个服务器实例。
server-id=2
修改完成后,重启Mysql服务。
3.2、更新同步
mysql>change master to master_host='10.111.7.75',master_user='slave',master_password='123456';
mysql> start slave; #启动slave
mysql> show slave status\G; #查看状态
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.111.7.75
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin-master.000001
Read_Master_Log_Pos: 440
Relay_Log_File: node1-relay-bin.000004
Relay_Log_Pos: 677
Relay_Master_Log_File: mysql-bin-master.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
在状态中主要的两个参数
Slave_IO_Running| Yes| 负责与 Master 主机的 IO 通信
Slave_SQL_Running| Yes| 负责自己的 slave mysql 进程
在查看状态中,这两个参数为Yes后,基本的搭建工作就完成。后面就可以测试主从数据是否正常。
# 问题说明
1、Slave_IO_Running:NO的问题
处理方式: 二进制日志没有开启 IPTABLES 没有放开端口 对应的主机 IP 地址写错了 用户名或密码写错了。 这个问题,我在操作中并没有发现,但是在查询问题时,别人对此问题也有分析,在此记录下来。
2、Slave_SQL_Running:NO的问题
这个问题应该是比较常见,解决办法:
先在主数据(master)中查看master 状态
mysql>show master status;
+-------------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------------+----------+--------------+------------------+-------------------+
| mysql-bin-master.000001 | 440 | db1,db2 | | |
+-------------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
#在从数据库中
mysql>stop slave;
mysql>change master to master_host='10.111.7.75',master_user='slave',master_password='1qaz!2WSX',master_log_file='mysql-bin-master.000001',master_log_pos=440;
# 执行时,手动添加master_log_file和master_log_pos,
mysql>start slave;
再来查看show slave status\G; #查看状态。
这是在操作数据库 主-从备份时碰到的问题,当然在操作过程中也是参考了网上的一些文章。
Mysql主从备份
Slave_SQL_Running:NO的解决办法