bindchange 参数_MySQL主从复制(3)——Change Master参数详解

本文详细介绍了MySQL主从复制中Change Master命令的使用,包括MASTER_HOST、MASTER_PORT、MASTER_USER、MASTER_PASSWORD等关键参数的含义和设置方法,以及MASTER_DELAY、MASTER_AUTO_POSITION等高级选项的作用。通过示例展示了如何执行change master命令来配置从服务器连接主服务器的参数。
摘要由CSDN通过智能技术生成

MySQL主从复制(3)——Change Master参数详解

在进行MySQL主从复制配置时,change master 用于配置和改变 slave 服务器用于连接 master 服务器的参数,以便 slave服务器读取 master 服务器的 binlog 及 slave 服务器的 relay log。同时更新 master.info 及 relay-log.info信息。执行该语句之前从服务器上如果 IO 线程和 SQL 线程已经启动,需要先停止(执行 stop slave 命令)。

一、change master 命令概述

change master 命令的格式如下:

CHANGE MASTER TO option [, option] ...

option:

MASTER_BIND = 'interface_name'

MASTER_HOST = 'host_name'

MASTER_USER = 'user_name'

MASTER_PASSWORD = 'password'

MASTER_PORT = port_num

MASTER_CONNECT_RETRY = interval

MASTER_RETRY_COUNT = count

MASTER_DELAY = interval

MASTER_HEARTBEAT_PERIOD = interval

MASTER_LOG_FILE = 'master_log_name'

MASTER_LOG_POS = master_log_pos

MASTER_AUTO_POSITION = {01}

RELAY_LOG_FILE = 'relay_log_name'

RELAY_LOG_POS = relay_log_pos

MASTER_SSL = {01}

MASTER_SSL_CA = 'ca_file_name'

MASTER_SSL_CAPATH = 'ca_directory_name'

MASTER_SSL_CERT = 'cert_file_name'

MASTER_SSL_CRL = 'crl_file_name'

MASTER_SSL_CRLPATH = 'crl_directory_name'

MASTER_SSL_KEY = 'key_file_name'

MASTER_SSL_CIPHER = 'cipher_list'

MASTER_SSL_VERIFY_SERVER_CERT = {01}

IGNORE_SERVER_IDS = (server_id_list)

server_id_list:

[server_id [, server_id] ... ]

执行 change master 命令后的信息保存在 master.info 和 relay-log.info 两个文件中。

[root@localhost ~]# ll /var/lib/mysql/*info

-rw-r-----. 1 mysql mysql 126 7月 5 11:52 /var/lib/mysql/master.info

-rw-r-----. 1 mysql mysql 61 7月 5 11:28 /var/lib/mysql/relay-log.info

查看 master.info 文件的内容:

[root@localhost ~]# cat /var/lib/mysql/master.info

25

mysql-bin.000014

1818

192.168.1.11

repl

123456

3306

60

0

0

30.000

0

95cfc8eb-2d58-11ea-840b-000c296166d5

86400

0

[root@localhost ~]#

查看 relay-log.info 文件的内容:

[root@localhost ~]# cat /var/lib/mysql/relay-log.info

7

./mysql-relay-log.000002

1539

mysql-bin.000014

1818

0

0

1

[root@localhost ~]#

change master 命令涉及到的参数很多,在执行 change master 命令时,如果不指定某个参数的话,该参数保留原值或默认值。因此,如果某些参数不需要更改,change master to 命令可以不带该参数。

例如,改变了用于复制的用户密码,则 change master to 只需要更改 MASTER_PASSWORD 选项即可,代码如下:

mysql> stop slave;

Query OK, 0 rows affected (0.05 sec)

mysql> change master to master_password='123456';

Query OK, 0 rows affected, 2 warnings (0.02 sec)

mysql> start slave;

Query OK, 0 rows affected (0.01 sec)

二、change master 常用参数的详细说明

1、MASTER_HOST 与 MASTER_PORT

MASTER_HOST用于设置 master 服务器的主机名(或IP地址);MASTER_PORT 用于设置 master 服务器中的MySQL实例端口号。

如果指定 MASTER_HOST 与 MASTER_PORT参数,slave会认为与之前指定的不是同一个(即便MASTER_HOST 与 MASTER_PORT所带的参数与之前相同),之前指定的 master 的 binlog 文件名及位置将不再适用。

例如:

change master to

....

master_host='192.168.1.11',

master_port=3306,

....;

2、MASTER_USER 与 MASTER_PASSWORD

连接到 master 主机复制账户所对应的用户名和密码。 MASTER_HOST、MASTER_PORT、MASTER_USER、MASTER_PASSWORD 四个选项提供了 slave 服务器连接到 master 主机的信息。

例如:

change master to

....

master_host='192.168.1.11',

master_port=3306,

master_user='repl',

master_password='123456',

....;

3、MASTER_LOG_FILE 与 MASTER_LOG_POS

MASTER_LOG_FILE 与 MASTER_LOG_POS 两个选项确定 slave 的 IO 线程下次开始执行时从 master 开始读取的位置坐标。

RELAY_LOG_FILE 与 RELAY_LOG_POS 两个选项确定 slave 的 SQL 线程下次开始执行时从relay log 开始读取的位置坐标。

如果指定了 MASTER_LOG_FILE 或 MASTER_LOG_POS 中的任意一项,就不能再指定RELAY_LOG_FILE 或 RELAY_LOG_POS,也不能指定MASTER_AUTO_POSITION = 1。

例如:

change master to

....

master_host='192.168.1.11',

master_port=3306,

master_user='repl',

master_password='123456',

master_log_file='mysql-bin.000012',

master_log_pos=559,

....;

4、MASTER_AUTO_POSITION

该参数在 mysql5.6.5 版本引入,如果运行 change master to 时使用 MASTER_AUTO_POSITION = 1,slave 服务器连接 master 服务器时将使用基于 GTID 的复制协议。

使用基于 GTID 的复制时(MASTER_AUTO_POSITION = 1),首先要开启 gtid_mode(在 my.cnf 中设置 gtid-mode= ON)。

使用 GTID 后如果要恢复到基于文件的复制协议,在执行 change master to 时需要指定 MASTER_AUTO_POSITION = 0以及 MASTER_LOG_FILE 和 MASTER_LOG_POSITION。

5、MASTER_CONNECT_RETRY

设置重新连接到 master 时的超时等待时间,默认为60秒。

change master to

....

master_host='192.168.1.11',

master_port=3306,

master_user='repl',

master_password='123456',

master_log_file='mysql-bin.000012',

master_log_pos=559,

master_connect_retry=120,

....;

6、MASTER_RETRY_COUNT

限制重新连接的次数,更新 show slave status 输出的 Master_Retry_Count列。默认值是24 * 3600 = 86400。MASTER_RETRY_COUNT = 0 表示重新连接次数无限制。

例如:

change master to

....

master_host='192.168.1.11',

master_port=3306,

master_user='repl',

master_password='123456',

master_log_file='mysql-bin.000012',

master_log_pos=559,

master_connect_retry=120,

master_retry_count=0,

....;

7、MASTER_DELAY

MASTER_DELAY 的默认值为0,取值范围为0至2^31–1,表示 slave 至少落后 master 的复制时间。来自 master 的事件不直接执行,而是至少等到 master 执行完该该事件 MASTER_DELAY 所指定的时间间隔后才执行。

例如:

change master to

....

master_host='192.168.1.11',

master_port=3306,

master_user='repl',

master_password='123456',

master_log_file='mysql-bin.000012',

master_log_pos=559,

master_connect_retry=120,

master_retry_count=0,

master_delay=86400, --slave 延迟 24 小时

....;

8、MASTER_BIND

在 slave 复制时,从服务器有多个IP的情况下使用,以确定使用哪一个 IP 连接到 master。

change master to

....

master_host='192.168.1.11',

master_bin='192.168.12',

master_port=3306,

master_user='repl',

master_password='123456',

master_log_file='mysql-bin.000012',

master_log_pos=559,

master_connect_retry=120,

master_retry_count=0,

master_delay=86400, --slave 延迟 24 小时

....;

9、IGNORE_SERVER_IDS = (server_id_list)

server_id_list: [server_id [, server_id] … ],后面接以逗号分隔的0个或多个server-id,主要用于多主复制或环形复制的情况,处于复制链条中间的服务器异常,可以跳过出问题的MySQL实例。

mysql> CHANGE MASTER TO MASTER_HOST=xxx IGNORE_SERVER_IDS= [server_id [, server_id] ... ]

清除忽略的主机列表使用如下命令:

mysql> CHANGE MASTER TO IGNORE_SERVER_IDS = ();

本文地址:https://blog.csdn.net/weixin_44377973/article/details/107137550

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值