1.mysql主从同步
1.1 主从同步介绍
- 实现数据自动同步的服务结构
- 主服务器:接受客户端访问连接
- 从服务器:自动同步主服务器数据
1.2 工作过程(主从同步原理)
-master
启用binlog日志
-slave
slave_io:复制master主机binlog日志文件里的SQL命令到本机的relay-log文件里
slave_sql:执行本机relay-log文件里的sql语句,实现与master数据一致
1.3 配置mysql主从同步
1.3.1 构建思路
- 配置主服务器
启用binlog日志,授权用户,查看binlog日志信息
- 配置从服务器
设置server_id
确保与主服务器数据一致
指定主库信息
命令格式:
change master to
master_host=“主库ip地址” , #主库ip地址
master_user=“用户名” , #主库授权用户
master_password=“密码” , #授权用户密码
master_log_file=“binlog日志”, #主库日志文件
master_log_pos=偏移量; #日志偏移量
启动slave程序
start slave;
stop slave; (停止slave服务)
查看状态信息
show slave status\G;
1.3.2 配置主服务器
[root@51 ~]# vim /etc/my.cnf
[mysqld]
log_bin=master51 #启用binlog日志
server_id=51 #指定服务器id号.
...
:wq
[root@51 ~]# systemctl restart mysqld
[root@51 ~]# ls /var/lib/mysql/master51.*
[root@51 ~]# mysql -uroot -p"123qqq...A"
-
授权用户
用户权限 replication slave
用户名自定义
客户端地址允许从库连接
密码自定义mysql> grant replication slave on *.* to repluser@"%" identified by "123qqq...A"; mysql> show master status\G; #查看日志信息 mysql> select user,host from mysql.user;
1.3.3 配置从服务器
-
修改主配置文件
指定server_id 不允许与主库server_id值相同[root@52 ~]# vim /etc/my.cnf [mysqld] server_id=52 #指定服务器id ... :wq [root@52 ~]# systemctl restart mysqld
-
确保与主服务器数据一致
在主服务器上备份数据,将备份文件拷贝给从服务器
从服务器使用备份文件恢复数据
在从服务器查看备份文件中的binlog日志信息[root@51 ~]# mysqldump -uroot -p123qqq...A --master-data db5 > /root/db5.sql #主库备份数据,--master-data记录当前备份数据对应的日志信息 [root@51 ~]# scp /root/db5.sql root@192.168.4.52:/opt/ [root@52 ~]# mysql -uroot -p123qqq...A -e 'create database db5' [root@52 ~]# mysql -uroot -p123qqq...A db5 < /opt/db5.sql #从服务器恢复数据 [root@52 ~]# mysql -uroot -p123qqq...A -e 'use db5 ; show tables' [root@52 ~]# grep master51 /opt/db5.sql #查看binlog日志名及偏移量 CHANGE MASTER TO MASTER_LOG_FILE='master51.000001', MASTER_LOG_POS=441; [root@52 ~]# mysql -uroot -p123qqq...A mysql> change master to master_host="192.168.4.51" , master_user="repluser", -> master_password="123qqq...A" , master_log_file="master51.000001",master_log_pos=441; mysql> start slave ; mysql> show slave status\G; Master_Host: 192.168.4.51 #主库IP地址 Slave_IO_Running: Yes #io线程已运行 Slave_SQL_Running: Yes #sql线程已运行
1.3.4 相关文件
master.info 主库信息 relay-log.info 中继日志信息 主机名-relay-bin.xxxxxx 中继日志 主机名-relay-bin.index 索引文件
1.4 排错
Last_IO_Error:报错信息
Last_SQL_Error:报错信息
stop slave;
根据提示解决问题
start slave;
show slave status\G;
终极解决办法:
删除相关文件的4种文件后 重启数据库服务,重新指定主服务器信息.
drop user repluser;
rm -rf /var/lib/mysql/master.info
rm -rf /var/lib/mysql/mysql54*
rm -rf /var/lib/mysql/relay-log.info
1.5 验证模式
1.5.1 添加授权用户(给客户端连接使用)
1.5.2 客户端使用授权用户连接主服务器51 对数据做访问 -