mysql主从复制
一、 MySQL主从复制基础知识
二进制日志binlog: 记录令数据库内容改变的语句,在备份还原时至关重要。(Master端必须开启)
中继日志relay-log:Slave从Master中读取binlog日志后,将其写入到Slave服务器上的relay-log里。(Slave端必须开启)
Server_id(同一集群中唯一):①用于标识sql语句最开始源自于哪里。②标记slave线程
二、 MySQL主从复制配置步骤
1. Master服务器配置
启用二进制日志
[mysqld]
log-bin = mysql-bin
设置一个全局唯一的ID号
[mysqld]
server_id = 111
授权给Slave数据库(账号)
mysql> GRANT REPLCATION SLAVE, REPLICATION CLIENT ON *.* \
TO 'slaveuser'@'192.168.30.%' IDENTIFIED BY 'Slave@123';
查看Master的二进制日子记录到了哪里,用于决定Slave从哪开始复制
mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000319
Position: 99952
2. Slave服务器配置
启用中继日志
[mysqld]
relay_log = relay-log
relay_log_index = relay-log.index
设置一个全局唯一的ID号
[mysqld]
server_id = 222
打开只读模式
[mysqld]
Read_only = 1
使用已授权的复制账号连接到Master服务器
mysql> CHANGE MASTER TO MASTER_HOST=‘192.168.30.154’, MASTER_USER=’slaveuser‘, MASTER_PASSWORD='Slave@123', MASTER_LOG_FILE='mysql-bin.000319', MASTER_LOG_POS=99952;
开启复制线程
mysql> START SLAVE;
三、 MySQL主从复制原理
四、 MySQL从数据库状态查询
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.30.154 主库IP
Connect_Retry: 60 中断后多久尝试重连
Master_Log_File: mysql-bin.000319 当前I/O线程正在读取的主服务器二进制日志
Read_Master_Log_Pos: 1005125008 当前I/O线程正在读取的二进制日志的位置
Relay_Log_File: slave-relay-bin.000062 当前SQL线程正在读取并执行的relay log的文件名
Relay_Log_Pos: 1005125171 当前slave SQL线程正在读取并执行的relay log文件中的位置
Relay_Master_Log_File: mysql-bin.000319 当前SQL线程读取并执行的relay log的文件中多数近期事件,对应的主服务器二进制日志文件的名称
Slave_IO_Running: Yes I/O线程是否被启动并成功地连接到主服务器上。
Slave_SQL_Running: Yes SQL线程是否被启动。
Last_Errno: 0 SQL线程读取日志参数的的错误数量
Last_Error: 错误消息
Skip_Counter: 0 SQL_SLAVE_SKIP_COUNTER的值,用于设置跳过sql执行步数
Exec_Master_Log_Pos: 1005125008 SQL线程当前执行的事件,对应在master相应的二进制日志中的position
Relay_Log_Space: 1005125391 所有原有的中继日志结合起来的总大小。
Seconds_Behind_Master: 0 可作为主从延迟时间参照。
Master_Server_Id: 40 主库ID标识
Master_UUID: 829c1b04-e795-11e5-b3a5-ba0e9619274c 主库服务器的UUID
Master_Info_File: /data/mysql/3306/master.info slave保存主库服务器配置信息的路径
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
线程已经处理了中继日志文件中的所有事件,现在正等待I/O线程将新事件写入中继日志。
Master_Retry_Count: 86400 连接主库失败最多的重试次数
Reference: https://www.cnblogs.com/paul8339/p/7615310.html