本实验的目的是实现两台主机上的MySQL数据复制,以及基于SSL的复制。
*要注意的两点问题所在:
1,版本问题:复制双方的版本最好一致,若不同,从节点的版本必须高于主节点的版本
2,复制起点问题:(1),从0开始,使用于均为新建服务器。(2),中间开始,就需要完全备份主服务上的数据,并将数据恢复至从服务器; 从服务器从备份时主服务器二进制日志所在位置开始复制。
实验环境:
node1:MASTER MariaDB 172.16.18.1
node2:SALVE MariaDB 172.16.18.2
配置过程:master:1、启用二进制日志2、定义server-id3、创建有复制权限的账号REPLICATION SLAVE, REPLICATION CLIENTMariaDB [(none)]> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repluser@’172.16.%.%’ IDENTIFIED BY ‘replp@ss’;Query OK, 0 rows affected (0.03 sec)MariaDB [(none)]> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.00 sec)slave:1、启动中继日志2、定义server-id3、使用有复制权限的账号连接master4、启动io thread以及sql thread
实验模型一:从零复制MySQL
安装MySQL的方法此处不做讲解,不会的可以查看此链接
首先配置node1,主MySQL
首先指定自己的二进制日志存放位置。
log-bin=/mydata/logs/mysql-bin #指定二进制日志存放位置
mkdir /mydata/logs -pv #创建二进制文件存放目录
chown -R mysql.mysql /mydata/ #修改logs属主属组为mysql
此节点的server-id = 1 不用修改。但要保证从节点可次server-id的不一样。
配置node2:从MySQL
修改配置文件
server-id = 2 #指定server-id号
relay-log = /mydata/relaylogs/relay-log #指定relay-log的位置以及名称
#log-bin=mysql-bin #关闭二进制日志。
启动node1,node2的MySQL
去主MySQL创建有复制权限的账号。node1
MariaDB [(none)]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO relay@’172.16.18.2′ IDENTIFIED BY ‘relay’;
Query OK, 0 rows affected (0.24 sec)
注意授权账号时要最小权限,最好指定授权给那个IP,不要给出多余的权限。
MariaDB [(none)]> FLUSH PRIVILEGES; #刷新。
Query OK, 0 rows affected (0.04 sec)
MariaDB [(none)]> show master status; 查看当前日志和位置。
好的,主节点的复制权限账号建立好了,下边去从节点连接主节点。
连接主节点的命令CHANGE MASTER TO
MariaDB [(none)]> HELP CHANGE MASTER TO #查看一下命令的帮助
Name: ‘CHANGE MASTER TO’
Description:
Syntax:
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 #如果MySQL修改了端口,此处也要指定
| MASTER_CONNECT_RETRY = interval
| MASTER_HEARTBEAT_PERIOD = interval
| MASTER_LOG_FILE = ‘master_log_name’ # 复制起点,,主节点上二进制日志,值类型为字串
| MASTER_LOG_POS = master_log_pos# 复制起点,主节点上二进制日志中起始事件的位置,值类型为数值
| RELAY_LOG_FILE = ‘relay_log_name’
| RELAY_LOG_POS = relay_log_pos
| MASTER_SSL = {0|1} #基于SSL复制
| MASTER_SSL_CA = ‘ca_file_name’ #CA文件名
| MASTER_SSL_CAPATH = ‘ca_directory_name’ #CA路径
| MASTER_SSL_CERT = ‘cert_file_name’
| MASTER_SSL_KEY = ‘key_file_name’
| MASTER_SSL_CIPHER = ‘cipher_list’
| MASTER_SSL_VERIFY_SERVER_CERT = {0|1}
| IGNORE_SERVER_IDS = (server_id_list)
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST=’172.16.18.1′,MASTER_USER=’relay’,MASTER_PASSWORD=’relay’,MASTER_LOG_FILE=’mysql-bin.000001′,MASTER_LOG_POS=489;
Query OK, 0 rows affected (0.08 sec)
查看从节点状态信息:
MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
痛苦留给的一切,请细加回味!苦难一经过去,苦难就变为甘美。