You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
7.0 KiB
120 lines
7.0 KiB
[A 服务器配置参数说明 192.168.1.17]
|
|
[mysqld]
|
|
server_id = 1 #区分不同的mysql
|
|
#basedir = /usr/local/mysql
|
|
#port = 3306
|
|
#socket = /tmp/mysql.sock
|
|
#datadir = /usr/local/mysql/data
|
|
#pid_file = /usr/local/mysql/data/mysql.pid
|
|
#log_error = /usr/local/mysql/data/mysql.er
|
|
#log_bin=mysql_bin #记录binlog并存放在默认位置 mysql/data mysql8好像默认开启
|
|
#log_bin_index = /var/lib/mysql/mysql_bin.index
|
|
#expire_logs_days = 7 #删除超出这个变量保留期之前的全部日志被删除
|
|
#binlog_format = ROW #(牵涉到数据量的问题 Statement,MiXED,以及ROW) 默认ROW
|
|
#binlog_row_metadata=MINIMAL #(binlog_format=ROW情况下有效,减少日志量 FULL全量日志大)
|
|
max_binlog_size = 512M #日志大小
|
|
|
|
sync_binlog = 1 #(commit时记录binlog日志,影响效率,但是为了保证主从一致性,需要开启 0:commit 先写缓存 1:立即写 N:操作N次写 )
|
|
#innodb_flush_log_at_trx_commit = 0 #(redo日志 0:commit不写 1:立即写 2:先写缓存 )
|
|
log_replica_updates=true #(原来的log_slave_updates,如果是3级以上或GTID主从 A_>B_>C 这个要打开,否则B复制A的数据无法同步到C,主要是否主从同步数据是否写入binlog)
|
|
#binlog_do_db = dbmgame #需要同步的库(记录binlog)
|
|
#binlog_do_db = dbmaccount
|
|
binlog_ignore_db = mysql #忽略的库,操作不需要同步
|
|
binlog_ignore_db = percona #(percona-toolkit一致性检测产生的库)
|
|
|
|
#replicate_do_db = dbmgame #需要复制的库(如果需要复制库,使用这个,binlog_do_db考虑效率尽量不适用)
|
|
#replicate_do_db = dbmaccount
|
|
replicate_ignore_db = mysql #忽略复制库
|
|
replicate_ignore_db = percona
|
|
|
|
#开启GTID(不支持CREATE TABLE ... SELECT , MyISAM)
|
|
gtid-mode=ON
|
|
enforce_gtid_consistency=1 #不让违反GTID的操作执行,可取值为:off:允许所有操作 on:不允许有违反GTID的操作,且报错
|
|
master_info_repository=TABLE #(file和table,决定了slave记录master的状态,如果参数是file,就会创建master.info文件,如果参数值是table,就在mysql中创建slave_master_info的表)
|
|
#relay_log_info_repository=TABLE #(类似master_info_repository,不过是记录relay日志)
|
|
#sync_relay_log_info=1
|
|
sync_master_info=1 #(更新master_info_repository指定的文件和表,1个事件后记录)
|
|
slave_parallel_workers=0
|
|
master_verify_checksum=on #master从binary log读取信息的时候会执行校验
|
|
slave_sql_verify_checksum=on #slave从relay log读取信息的时候会执行校验
|
|
#binlog_rows_query_log_events =1 # 在row模式下..开启该参数,将把sql语句打印到binlog日志里面.默认是0(off);
|
|
|
|
auto_increment_offset = 1
|
|
auto_increment_increment = 2 #奇数ID,避免同时写数据库冲突
|
|
|
|
#master_host = 192.168.1.34 #主库ip
|
|
#master_user = baksync #主库同步数据用的账号
|
|
#master_password = baksync
|
|
#master_port = 3306
|
|
#master_connect_retry = 10 #重新连接主库间隔时间(秒)
|
|
#master_auto_position=1 #GTID模式下有效,不需要指定binlog文件名和pos
|
|
|
|
#执行命令:change master to master_host='192.168.1.34', master_user='baksync', master_password='baksync',master_connect_retry=10,master_auto_position=1;
|
|
|
|
[B 服务器配置参数说明 192.168.1.34]
|
|
[mysqld]
|
|
server_id = 2 #区分不同的mysql
|
|
#basedir = /usr/local/mysql
|
|
#port = 3306
|
|
#socket = /tmp/mysql.sock
|
|
#datadir = /usr/local/mysql/data
|
|
#pid_file = /usr/local/mysql/data/mysql.pid
|
|
#log_error = /usr/local/mysql/data/mysql.er
|
|
#log_bin=mysql_bin #记录binlog并存放在默认位置 mysql/data mysql8好像默认开启
|
|
#log_bin_index = /var/lib/mysql/mysql_bin.index
|
|
#expire_logs_days = 7 #删除超出这个变量保留期之前的全部日志被删除
|
|
#binlog_format = ROW #(牵涉到数据量的问题 Statement,MiXED,以及ROW) 默认ROW
|
|
#binlog_row_metadata=MINIMAL #(binlog_format=ROW情况下有效,减少日志量 FULL全量日志大)
|
|
max_binlog_size = 512M #日志大小
|
|
|
|
sync_binlog = 1 #(commit时记录binlog日志,影响效率,但是为了保证主从一致性,需要开启 0:commit 先写缓存 1:立即写 N:操作N次写 )
|
|
#innodb_flush_log_at_trx_commit = 0 #(redo日志 0:commit不写 1:立即写 2:先写缓存 )
|
|
log_replica_updates=true #(如果是3级以上或GTID主从 A_>B_>C 这个要打开,否则B复制A的数据无法同步到C)
|
|
#binlog_do_db = dbmgame #需要同步的库(记录binlog)
|
|
#binlog_do_db = dbmaccount
|
|
binlog_ignore_db = mysql #忽略的库,操作不需要同步
|
|
binlog_ignore_db = percona #(percona-toolkit一致性检测产生的库)
|
|
|
|
#replicate_do_db = dbmgame #需要复制的库(如果需要复制库,使用这个,binlog_do_db考虑效率尽量不适用)
|
|
#replicate_do_db = dbmaccount
|
|
replicate_ignore_db = mysql #忽略复制库
|
|
replicate_ignore_db = percona
|
|
|
|
#开启GTID(不支持CREATE TABLE ... SELECT , MyISAM)
|
|
gtid-mode=ON
|
|
enforce_gtid_consistency=1
|
|
master_info_repository=TABLE #(file和table,决定了slave记录master的状态,如果参数是file,就会创建master.info文件,如果参数值是table,就在mysql中创建slave_master_info的表)
|
|
#relay_log_info_repository=TABLE #(类似master_info_repository,不过是记录relay日志)
|
|
#sync_relay_log_info=1
|
|
sync_master_info=1 #(更新master_info_repository指定的文件和表,1个事件后记录)
|
|
slave_parallel_workers=0
|
|
master_verify_checksum=on #master从binary log读取信息的时候会执行校验
|
|
slave_sql_verify_checksum=on #slave从relay log读取信息的时候会执行校验
|
|
#binlog_rows_query_log_events =1 # 在row模式下..开启该参数,将把sql语句打印到binlog日志里面.默认是0(off);
|
|
|
|
auto_increment_offset = 2
|
|
auto_increment_increment = 2 #偶数ID,避免同时写数据库冲突
|
|
|
|
#master_host = 192.168.1.17 #主库ip
|
|
#master_user = baksync #主库同步数据用的账号
|
|
#master_password = baksync
|
|
#master_port = 3306
|
|
#master_connect_retry = 10 #重新连接主库间隔时间(秒)
|
|
#master_auto_position=1 #GTID模式下有效,不需要指定binlog文件名和pos
|
|
|
|
#执行命令:change master to master_host='192.168.1.17', master_user='baksync', master_password='baksync',master_connect_retry=10,master_auto_position=1;
|
|
|
|
###########################################操作步骤##############################################
|
|
整个配置基于mysql8.0,测试可用,不需要改动,只需要修改ip即可,同时创建可用于相互连接的账号(baksync)既可
|
|
###1:如果主从,只需要在B服务器执行:
|
|
###change master to master_host='192.168.1.17', master_user='baksync', master_password='baksync',master_connect_retry=10,master_auto_position=1;
|
|
###start slave;
|
|
###show slave status\G;#查看状态确保 Slave_IO_Running: Yes Slave_SQL_Running: Yes
|
|
###切换的时候服务器执行 reloadconfig,然后从服务器stop slave;就可以正常处理
|
|
|
|
###2:如果双主,
|
|
###则 A 执行 change master to master_host='192.168.1.34', master_user='baksync', master_password='baksync',master_connect_retry=10,master_auto_position=1;
|
|
### B 执行 change master to master_host='192.168.1.17', master_user='baksync', master_password='baksync',master_connect_retry=10,master_auto_position=1;
|
|
###A/B 同时执行 start slave; show slave status\G;
|
|
###切换的时候服务器执行 reloadconfig,然后A/B stop slave;
|
|
|
|
|