主从复制 主–> 从
主从复制实现
1. 主节点配置
在/etc/my.cnf中
(1) 启用二进制日志
[mysqld]
log_bin
(2) 为当前节点设置一个全局惟一的ID号
[mysqld]
server_id=#
log-basename=master 可选项,设置datadir中日志名称,确保不依赖主机名
(3) 记录主服务器的二进制日志的文件名和开始点,
mysql>show master status;
(4) 创建有复制权限的用户账号
mysql>GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'HOST' IDENTIFIED BY'replpass';
2. 从节点配置
在/etc/my.cnf中
(1) 启动中继日志
[mysqld]
server_id=# #为当前节点设置一个全局惟的ID号
read_only=ON #设置数据库只读
relay_log=relay-log #relay log的文件路径,默认值hostname-relay-bin
relay_log_index=relay-log.index #默认值hostname-relay-bin.index
(2) 使用有复制权限的用户账号连接至主服务器,并启动复制线程
mysql> CHANGE MASTER TO MASTER_HOST='host', #主服务器的ip地址
MASTER_USER='repluser', #用于主从复制用户的用户名
MASTER_PASSWORD='replpass', #密码
MASTER_LOG_FILE=' mariadb-bin.xxxxxx', #主服务器的二进制日志的文件名,例如:mariadb-bin.000001
MASTER_LOG_POS=#; #主服务器二进制日志文件的开始点,例如:245
mysql> START SLAVE; #开启主从复制进程,如果配置出错用RESET SLAVE;命令可以清除配置
show slave status\G; #查看slave的状态
注意:
如果主节点已经运行了一段时间,且有大量数据时,如何配置并启动slave节点
通过备份恢复数据至从服务器
复制起始位置为备份时,二进制日志文件及其POS
3. 级联复制 – 主 --> 从(主) —> 从
如果要启用级联复制,需要在从(主)服务器启用以下配置
[mysqld]
log_bin
log_slave_updates 级联节点上二进制日志同步中继日志
relay_log=relay-log
relay_log_index=relay-log.index
过程:
主服务器完全备份–> 在级联节点还原数据库,级联服务器备份 --> 在从节点还原数据库
半同步复制
半同步复制实现:先将服务器配置成主从服务复制(至少三台服务器,即一主二从)
主服务器配置:安装数据库插件
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
mysql>SET GLOBAL rpl_semi_sync_master_enabled=1;
mysql>SET GLOBAL rpl_semi_sync_master_timeout = 1000;超时长1s
mysql>SHOW GLOBAL VARIABLES LIKE '%semi%';
mysql>SHOW GLOBAL STATUS LIKE '%semi%';
从服务器配置:安装数据库插件
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
mysql> SET GLOBAL rpl_semi_sync_slave_enabled=1;
在从服务器上重启线程:
mysql>stop slave;
start>slave;