复制环境配置宝典:
全新环境配置Replication:表示主从数据库服务均为全新,这种场景下的配置方案最为简单和灵活
现有环境配置Replication:表示主数据库服务已有数据,这种情景下的配置就需要考虑多种因素
为现有环境配置Replication复制,可以细分为:
创建一台Slave:当前已有Master节点,需要配置Slave节点,以创建Replication复制环境
增加一台Slave:当前已有M-S复制环境,需要再增加Slave节点,以增强系统的整体负载能力
在具体配置Slave节点时,可以细分为:
脱机方式创建:操作过程中,MySQL服务可以停机
联机方式创建:操作过程中,MySQL服务不能中断运行
1、Master端启用二进制日志,指定唯一的server_id
2、Slave端配置唯一的server_id
3、创建复制专用账户
(system@localhost) [(none)]> grant replication slave on *.* to 'rep1'@'ip' identified by 'rep1';
4、记录Master端日志信息并创建镜像
需要确定当前Master数据库服务是否仍处与读写状态
获取当前Master数据库的日志文件名和位置
创建一份完整的数据备份,备份创建过程中,Master不能再有写操作,或者要有相应措施确保,从获取到Master日志信息,到数据备份完成,这期间的操作不会在Slave端被重复应用
mysql>flush tables with read lock;
mysql>show master status;
然后通过复制数据文件,用mysqldump命令、xtrabackup命令,创建一份数据库完整备份
mysql>unlock tables;
5、配置Slave端的连接
(system@localhost) [(none)]> change master to master_host='192.168.1.201', master_port=3306, master_user='rep1', master_password='rep1', master_log_file='mysql-bin.000007', master_log_pos=120;
不管是mysqldump还是xtrabackup,均有专用的配置Slave节点连接Master节点的参数,一定要注意,以免重复执行造成不必要的错误
常用复制环境管理命令:
1、检查Slave节点的各个状态
Slave>show slave status;
重要指标
Slave_IO_State:显示Slave当前的状态
Slave_IO_Running:I/O线程是否在运行
Slave_SQL_Running:SQL线程是否在运行
Last_IO_Error/Last_SQL_Error:是否有错误信息
Seconds_Behind_Master:显示当前Slave节点与Master节点的同步延迟,计算公式是:io_thread.timestamp-sql_thread.timestamp
SHOW PROCESSLIST辅助了解复制状态的作用
Master_Log_File/Read_Master_Log_Pos:显示当前读取的Master节点二进制日志文件和文件位置
Relay_Master_Log_File/Exec_Master_Log_Pos:显示当前Slave节点正在应用的日志文件位置
Relay_Log_File/Relay_Log_Pos:显示当前Slave节点正在处理的中继日志文件和位置
Master>show processlist;
Master>show slave hosts;
Slave>show processlist;
通过Master/Slave中连接信息表明,每一组Master、Slave都有三个线程(Master节点一个,Slave节点两个),各司其职并且相互配合,共同维护复制环境中数据的同步。
2、启停Slave线程
Slave>start slave;
Slave>stop slave;
Slave>start slave sql_thread;
Slave>start slave io_thread;
Slave服务由两个线程组成:
IO_THREAD:负责读取Master端的二进制日志,并写入到本地的中继日志(relay-log)中
SQL_THREAD:负责从本地中继日志读取事件并执行
中继日志文件和状态文件:
二进制日志文件用于保存节点自身产生的事件,中继日志文件中则是保存接收自其他节点的事件(也是二进制格式),中继日志文件默认保存在data目录下。Slave节点有两个线程,其中IO_THREAD线程用于接收和保存二进制日志,SQL_THREAD线程用于应用这些日志。中继日志文件的管理可以完全交由Slaves节点的SQL_THREAD线程来维护。除了中继日志文件外,复制环境中的Slave节点还会创建两个复制环境的状态文件,即master.info和relay-log.info,默认保存在data目录下,master.info保存复制环境中连接Master节点的配置信息,replay-log.info保存处理进度及中继日志文件的位置。IO_THREAD负责更新master.info文件,SQL_THREAD负责更新relay-log.info文件。
在5.6版本后,可以选择将master.info信息保存在mysql.slave_master_info表对象
在5.6版本后,可以选择将relay-log.info信息保存在mysql.slave_relay_log_info表对象中