MySQL主从复制详解(3)

#主从复制框架基本完成,但从库还可以进行数据的写入操作; #如果有用户向从库中写数据,然后从库在从主库同步数据库时,会造成数据错乱,从而造成数据损坏,所以需要把从库设置成只读 [root@slave ~]# mysql -uroot -p Enter password: mysql> set global read_only=1; mysql> show global variables like 'read%';

MySQL主从复制详解

read-only = OFF/ON,全局变量,只有管理员具有修改权限;

read-only = ON,此功能只对非管理员组用户有效;

通过命令设置的read-only在服务重启后消失,可以在my.cnf文件中设置永久生效。

五.验证 1. 查看线程 1)主库

[root@master ~]# mysql -uroot -p Enter password: mysql> show processlist\G;

MySQL主从复制详解

主库的binlog dump线程已由从库的repl用户启动。

2)从库

[root@slave ~]# mysql -uroot -p Enter password: mysql> show processlist\G;

MySQL主从复制详解

从库的I/0线程与SQL线程已由系统用户启动;

SQL线程常见还有1个常见状态" Reading event from the relay log"。

2. 查看从库状态

[root@slave ~]# mysql -uroot -p Enter password: mysql> show slave status\G;

MySQL主从复制详解

重点关注Slave_IO_Running与Slave_SQL_Running,状态均为YES时正常。

#slave status各指标意义如下(红色粗体指标比较重要): Slave_IO_State: I/O线程已连接master,正等待二进制日志事件到达 Master_Host: master ip Master_User: 连接master的用户 Master_Port: master端口 Connect_Retry: 当重新建立主从连接时,如果连接建立失败,重试间隔时间,默认60s。 Master_Log_File: I/O线程当前正在读取的master二进制日志文件 Read_Master_Log_Pos: 在当前的master二进制日志中,I/O线程已读取到的位置 Relay_Log_File: SQL线程当前正在读取和执行的中继日志文件的名称 Relay_Log_Pos: SQL线程在当前的中继日志中已读取和执行的位置 Relay_Master_Log_File: SQL线程执行的master二进制文件 Slave_IO_Running: I/O线程是否运行并成功地连接到master Slave_SQL_Running: SQL线程是否运行 Replicate_Do_DB:需要复制的数据库 Replicate_Ignore_DB:不需要复制的数据库 Replicate_Do_Table:需要复制的表 Replicate_Ignore_Table:不需要复制的表 Replicate_Wild_Do_Table: 限制复制更新的表,匹配指定的数据库和表名模式的语句 Replicate_Wild_Ignore_Table: 不需要要复制表,匹配给出的通配符模式的语句 Last_Errno:错误代码 Last_Error:错误信息 Skip_Counter: SQL_SLAVE_SKIP_COUNTER的值 Exec_Master_Log_Pos: master上一个被执行的位置 Relay_Log_Space: 中继日志文件大小 Until_Condition: 在START SLAVE语句的UNTIL子句中指定的值 Until_Log_File: 用于指示日志文件名 Until_Log_Pos: 位置值 Master_SSL_Allowed: 如果允许对主服务器进行SSL连接,则值为Yes,否则NO Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: slave落后master多少的一个指标.此状态是一个很重要的性能指标,正常为0,如果slave的I/O线程无法连接master显示null Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 最近的IO线程错误代码,其中2003代表I/o线程无法连接主服务器 Last_IO_Error: 最近的IO线程错误信息(例如:error reconnecting to master 'repl@192.168.1.6:3306' - retry-time: 60 retries: 3) Last_SQL_Errno: 最近的SQL线程错误代码 Last_SQL_Error: 最近的SQL线程错误信息 Replicate_Ignore_Server_Ids: Master_Server_Id: master的服务器ID Master_UUID: master的UUID值 Master_Info_File: slave的master.info文件路径 SQL_Delay: 正数表明slave有延迟了 SQL_Remaining_Delay: 整数表明延迟时间 Slave_SQL_Running_State: SQL线程运行状态,SQL线程已经处理了中继日志文件中的所有事件,现在正等待I/O线程将新事件写入中继日志 Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp:最近的I/O线程错误时间 Last_SQL_Error_Timestamp:最近的SQL线程报错时间 Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0

3. 从库中的3个文件

在从库的数据库路径下会生成3个文件:master.info,relay-log.info,relay-bin

master.info:记录master的ip,账号,密码,以及从库的I/O线程当前读取到主库的binglog的位置。

relay-log.info:记录从库的SQL线程当前读取到中继日志(relay-bin)的位置。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/77ceb8569de289e0667b98167a549e82.html