MySql5.7-多源复制(多主单从)

1.1.主库配置

my.cnfmysql

 

#确保惟一sql

server-id=1数据库

#做为Master要开启binlogvim

log-bin=mysql-bin服务器

#binlog format有三种形式:Statement、Mixed、Row,默认设置为mixed并发

binlog-format=mixedide

#须要同步的库,不指定默认同步所有库性能

binlog-do-db=radiusspa

#不须要同步的库命令行

binlog-ignore-db=mysql

binlog-ignore-db=information_schema

binlog-ignore-db=performance_schema

binlog-ignore-db=sys

#这个比较重要,直接影响同步的性能 延时等问题.mysql5.7多源复制参数,5.7以前版本可不加

sync_binlog=1

auto_increment_increment=2

auto_increment_offset=1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#GTID模式

gtid-mode=on

enforce-gtid-consistency

 

1.2建立主库受权从库同步的用户

mysql>grant replication slave on *.* to 'slave'@'192.168.100.%' identified by '308731044';

replication slave:远程用户备份权限

*.*:第一个星号表明库,第二个星号表明数据库里的表。可指定库和表

'slave'@'192.168.100.%':@前为用户名,@后为受权的IP段(就是容许那些IP使用这个帐号权限访问)

'308731044':远程备份用户密码

1.3刷新设置(修改的内容刷新到数据库配置里 )

mysql>flush privileges;

查看和删除受权受权用户(删除不使用的帐号)

查询用户:select user,host from mysql.user;

删除用户:Delete FROM mysql.user Where User='sns_qnzs' and Host='172.17.116.%';

92B4CA3786DA4A34986F582367FD6AE3

1.4从库配置

#确保惟一

server-id = 3

#复制的库,不指定默认备份所有库

replicate-do-db = master1

replicate-do-db = master2

 

#不复制的库

 

replicate-ignore-db = mysql

replicate-ignore-db = information_schema

replicate-ignore-db = performance_schema

replicate-ignore-db = sys

 

#binlog日志设置

relay-log = /home/mysql/data/

mysqld-relay-bin

 

log-slave-updates = ON

slave-parallel-type=LOGICAL_CLOCK

relay_log_recovery=ON

 

#超时

slave_net_timeout = 30

 

#复制并发数设置

slave_parallel_workers = 16

 

#从库复制跳过错误

 

slave-skip-errors = 1062,1053,1146,1213,1264,1205,1396

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#mysql5.7多源复制必须添加的参数(不加报错),5.7版本以前不用加

 

master_info_repository=TABLE

relay_log_info_repository=TABLE

 

#GTID模式(使用GTID就能够不用记录备份位置点)

gtid-mode=on

enforce-gtid-consistency

1.5.从库配置用户及binlog位置信息(推荐使用GTID模式)

#GTID模式配置

CHANGE MASTER TO MASTER_HOST='192.168.1.131', MASTER_USER='slave', MASTER_PORT=3451, MASTER_PASSWORD='xxxxxx', MASTER_AUTO_POSITION = 1 FOR CHANNEL 'master-1';

主库配置可使用到多个主库上,从库添加相应的配置便可(GTID模式配置)

 

#Binlog模式

CHANGE MASTER TO

MASTER_HOST='192.168.100.108',

MASTER_PORT=3306,

MASTER_USER='rep',

MASTER_PASSWORD='308731044',

MASTER_LOG_FILE='mysql-bin.000002',

MASTER_LOG_POS=107;

107就是备份binlog位置点。使用GTID能够省略

MASTER_LOG_POS=107;

68835FEC23464BF9919652D00C02D2D0

 

 

查看主从复制状态:

show slave status \G; 
show slave status for channel 'master-1' \G; 
IO及SQL线程状态为YES时,表示正常

7BEBCAB327FB4F479AD1851665F342EB

1.6重置备份配置

1.主库操做

restet master

 

2.从库操做

stop slave;

stop slave for channel 'master-1'

reset slave all for channel 'master-1'

restet master;

重复步骤1.5

start slave for channel 'master-1'

flush privileges;

mysql主库复制小结:

stop slave; #<==临时中止同步开关。

start slave;#<==临时中止同步开关。

show processlist;查看sql慢查询语句

80E4ADCBCE8D4998AF0061AA0C8A91C1

set global sql_slave_skip_counter =1 ; #<==将同步指针向下移动一个,若是屡次不一样步,能够重复操做。

主库设置从库跳过错误设置:

1. 当从库复制遇到错误时,好比报错“要建立的数据库已存在”

解决方案: 让从库跳过这一步操做,继续执行其它的操做

方法一: 命令行实现,跳过这一步;

mysql> stop slave;
mysql> set global sql_slave_skip_counter =1;
mysql> start slave;

方法二: 配置文件中,指定忽略的错误;

[root@MySQL opt]# grep slave-skip /data/3308/my.cnf
slave-skip-errors = 1032,1062

 

grep slave-skip /data/3306/my.cnf

vim /data/3306/my.cnf

slave-skip-errors = 1032,1062,1007(添加可忽略错误状态)

数据库级联同步设置必要参数:

log-slave-updates #<==必需要有这个参数

log-bin = /data/3307/mysql-bin

expire_logs_days = 7 (七天自动删除binlog文件)

总结:

领导要求部署MySql多主单从,以前都是单间单主多从。听到多主单从后,表示一脸懵比。查询一番话。原来是MySql5.7新出的功能。

MySql5.7新功能-多源复制,能够节省服务器成本。提升服务器利用率。搭建和以前的版本大体步骤相似。使用GTID模式更加快捷。

但在集群的过程当中,也遇到了不少的坑。大部分都是常见的错误。能够百度也能够根据错误日志进行排查(推荐),使用fpm打包了MySql。

之后也能够放到内网的yum源上,方便重复安装,天天记录一点点。

相关文章
相关标签/搜索