mysqlrplcheck 工具是用来检查复制的先决条件的。这些检查的设计或者说是测试,是用来确保复制的健康。测试的内容有:
- 在主上是否启用了二进制?
- 是否有排除某些二进制(如有*_do_db 或 *_ignore_db的设置)?如果有,显示它们。
- 在主上是否有复制用户以及权限是否正确?
- SERVER_ID是否冲突?
- 从是否连接到主?如果没有显示主的主机和端口。
- 从上的master.info文件与主上的SHOW SLAVE STATUS显示的值是否冲突?
- InnoDB配置是否兼容(插件还是内嵌的)?
- 存储引擎是否兼容(主从一样)?
- lower_case_tables_names设置是否兼容?如果有设置大小写表名可能会导致问题产生警告。
- 从是否落后主?
该工具进行每个测试,如果发现任何一个发生错误将退出。连接服务器失败也会退出的。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-utilities-mysqlrplcheck/
每个测试的状态有:pass(满足先决条件)、fail(满足先决条件但是发生了一个或多个错误,或者例外)、warn(需要进一步研究配置,但是不是错误的。)文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-utilities-mysqlrplcheck/
使用--verbose选项来获取额外的信息,如server_id、lower_case_table_name设置和从上面的主信息文件内容。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-utilities-mysqlrplcheck/
为了查看到SHOW SLAVE STATUS语句的值,可以使用 --show-slave-status 选项。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-utilities-mysqlrplcheck/
选项
MySQL Utilities mysqlrplcheck version 1.5.3 License type: GPLv2 Usage: mysqlrplcheck --master=root@localhost:3306 --slave=root@localhost:3310 mysqlrplcheck - check replication Options: --version show program's version number and exit --help display a help message and exit --license display program's license and exit --master=MASTER connection information for master server in the form: <user>[:<password>]@<host>[:<port>][:<socket>] or <login-path>[:<port>][:<socket>] or <config- path>[<[group]>]. --slave=SLAVE connection information for slave server in the form: <user>[:<password>]@<host>[:<port>][:<socket>] or <login-path>[:<port>][:<socket>] or <config- path>[<[group]>]. --master-info-file=MASTER_INFO the name of the master information file on the slave. Default = 'master.info' read from the data directory. Note: this option requires that the utility run on the slave with appropriate file read access to the data directory.从上的master.info文件。要求在从上执行并有访问该文件的权限。 -s, --show-slave-status show slave status。在主上显示SHOW SLAVE STATUS值。 --width=WIDTH display width。改变测试报告的显示宽度。默认是75个字符。 --suppress suppress warning messages。取消警告消息。 --ssl-ca=SSL_CA The path to a file that contains a list of trusted SSL CAs. --ssl-cert=SSL_CERT The name of the SSL certificate file to use for establishing a secure connection. --ssl-key=SSL_KEY The name of the SSL key file to use for establishing a secure connection. -v, --verbose control how much information is displayed. e.g., -v = verbose, -vv = more verbose, -vvv = debug -q, --quiet turn off all messages for quiet execution.
注意
用户必须要有SHOW SLAVE STATUS, SHOW MASTER STATUS, SHOW VARIABLES的执行权限。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-utilities-mysqlrplcheck/
IP地址和主机名混合使用不推荐。涉及到反向解析的问题。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-utilities-mysqlrplcheck/
MySQL客户端工具的路径需要包含在PATH环境变量中,以便使用login-paths验证机制。允许使用my_print_defaults 来从登陆配置文件(.mylogin.cnf)读取login-path值。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-utilities-mysqlrplcheck/
实例
在设置主从复制之前,检测主从的先决条件,命令如下:文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-utilities-mysqlrplcheck/
shell> mysqlrplcheck --master=root@host1:3310 --slave=root@host2:3311 # master on host1: ... connected. # slave on host2: ... connected. Test Description Status ------------------------------------------------------------------------ Checking for binary logging on master [pass] Are there binlog exceptions? [pass] Replication user exists? [pass] Checking server_id values [pass] Is slave connected to master? [pass] Check master information file [pass] Checking InnoDB compatibility [pass] Checking storage engines compatibility [pass] Checking lower_case_table_names settings [pass] Checking slave delay (seconds behind master) [pass] # ...done.
在这个例子中,必须要有登录主从的有效的登录信息。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-utilities-mysqlrplcheck/
执行相同的命令,并显示从上的主信息文件的内容和 SHOW SLAVE STATUS 值以及额外的详细信息,如下:文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-utilities-mysqlrplcheck/
shell> mysqlrplcheck --master=root@host1:3310 --slave=root@host2:3311 \ --show-slave-status -vv # master on host1: ... connected. # slave on host2: ... connected. Test Description Status ------------------------------------------------------------------------ Checking for binary logging on master [pass] Are there binlog exceptions? [pass] Replication user exists? [pass] Checking server_id values [pass] master id = 10 slave id = 11 Is slave connected to master? [pass] Check master information file [pass] # # Master information file: # Master_Log_File : clone-bin.000001 Read_Master_Log_Pos : 482 Master_Host : host1 Master_User : rpl Master_Password : XXXX Master_Port : 3310 Connect_Retry : 60 Master_SSL_Allowed : 0 Master_SSL_CA_File : Master_SSL_CA_Path : Master_SSL_Cert : Master_SSL_Cipher : Master_SSL_Key : Master_SSL_Verify_Server_Cert : 0 Checking InnoDB compatibility [pass] Checking storage engines compatibility [pass] Checking lower_case_table_names settings [pass] Master lower_case_table_names: 2 Slave lower_case_table_names: 2 Checking slave delay (seconds behind master) [pass] # # Slave status: # Slave_IO_State : Waiting for master to send event Master_Host : host1 Master_User : rpl Master_Port : 3310 Connect_Retry : 60 Master_Log_File : clone-bin.000001 Read_Master_Log_Pos : 482 Relay_Log_File : clone-relay-bin.000006 Relay_Log_Pos : 251 Relay_Master_Log_File : clone-bin.000001 Slave_IO_Running : Yes Slave_SQL_Running : Yes Replicate_Do_DB : Replicate_Ignore_DB : Replicate_Do_Table : Replicate_Ignore_Table : Replicate_Wild_Do_Table : Replicate_Wild_Ignore_Table : Last_Errno : 0 Last_Error : Skip_Counter : 0 Exec_Master_Log_Pos : 482 Relay_Log_Space : 551 Until_Condition : None Until_Log_File : Until_Log_Pos : 0 Master_SSL_Allowed : No Master_SSL_CA_File : Master_SSL_CA_Path : Master_SSL_Cert : Master_SSL_Cipher : Master_SSL_Key : Seconds_Behind_Master : 0 Master_SSL_Verify_Server_Cert : No Last_IO_Errno : 0 Last_IO_Error : Last_SQL_Errno : 0 Last_SQL_Error : # ...done.
权限
在主上需要对mysql数据库具有SELECT 和 INSERT权限,同时还要有REPLICATION SLAVE, REPLICATION CLIENT 和 GRANT OPTION权限。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-utilities-mysqlrplcheck/
在从上需要有SUPER 权限。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-utilities-mysqlrplcheck/
此外,当使用GTIDs时,从用户还必需要有对mysql数据库的SELECT 权限。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-utilities-mysqlrplcheck/ 文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-utilities-mysqlrplcheck/

评论