mysql gtid复制

Posted xgmxm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql gtid复制相关的知识,希望对你有一定的参考价值。

gtid主主

====================配置如下====================
[client]
port = 3306
socket=/tmp/my3306.sock

[mysql]
no-auto-rehash

[mysqld]
user = mysql
port = 3306
bind_address = *
socket=/tmp/my3306.sock
character_set_server = utf8
log-error = /home/mysql/3306/logs/my3306_error.log
pid-file=/home/mysql/3306/logs/my3306.pid
homedir=/home/mysql/3306/data
basedir=/opt/mysql
default-storage-engine=InnoDB #MyISAM
open_files_limit = 10240
autocommit = 1
sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
secure_file_priv=‘‘
lower_case_table_names=1
skip-grant
skip-name-resolve =on


#说明:主库必须配置的参数
#server-id (主从的server-id必须不同)、log_bin、log-slave-updates、gtid_mode、enforce_gtid_consistency
server-id=1921685533
gtid_mode=on                          #开启gtid模式
enforce_gtid_consistency=on           #强制gtid一致性,开启后对于特定create table不被支持
log-slave-updates=1                   #slave 更新是否记入日志
skip_slave_start=1                    #复制进程就不会随着数据库的启动而启动(想要随数据库启动而启动 注释掉)
relay-log = /home/mysql/3306/binlog/relay
relay_log_purge = on
log-bin = /home/mysql/3306/binlog/binlog

binlog_cache_size = 32M
binlog_format = ROW #MIXED

binlog_row_image = FULL

max_binlog_cache_size = 2048M
max_binlog_size = 512M
expire_logs_days = 90


key_buffer_size = 1024M
max_allowed_packet = 1024M
table_open_cache = 1024
sort_buffer_size = 8M
read_buffer_size = 8M
read_rnd_buffer_size = 8M
join_buffer_size = 8M
myisam_sort_buffer_size = 128M
thread_cache_size = 128
query_cache_size= 128M
thread_concurrency = 8
interactive_timeout = 1800
wait_timeout = 1800

max_connections = 1000
max_user_connections = 1000
max_connect_errors = 6000
back_log = 600

long_query_time=3
slow_query_log=1
slow_query_log_file=/home/mysql/3306/logs/my3306-slow-query.log


skip_external_locking=1

innodb_file_per_table = on
innodb_buffer_pool_size = 2048M 
innodb_thread_concurrency = 8 
innodb_flush_log_at_trx_commit = 1

注意:
除了 server_id不一样外   其它的都一样。
主库必须配置的参数:
server-id (主从的server-id必须不同)、log_bin、log-slave-updates、gtid_mode、enforce_gtid_consistency
从库必须配置的参数:双主read-only 是不需要配置的
server-id、log_bin、relay-log、read-only、log-slave-updates
===============================================

1.启动数据库
2.创建同步账号
grant replication slave on *.* to slave@% identified by 123123;
3.备份数据库(-A 备份所有库,该备份文件会包含一条语句需要注意set @@global.gtid_purged="a57a3eb0-5d40-11e6-9609-080027f7e774:1-3")
mysqldump -uroot --default-character-set=utf8 -p -R --opt --triggers --hex-blob --single-transaction -A -S /tmp/my31306.sock > /tmp/back.sql

4.另外一台恢复数据库
mysql -uroot --default-character-set=utf8 -p  < /data/tmp.sql(指定字符集恢复)

以下操作两台都需要操作。
5. 停止slave
stop slave;

6.进行同步 CHANGE TO 操作()
change master to master_host="192.168.1.100",master_port=3306,master_user=repl,
master_password=repl4slave,master_auto_position=1;

#参数解释:
MASTER_HOST : 设置要连接的主服务器的ip地址
MASTER_USER : 设置要连接的主服务器的用户名
master_port:设置要连接的主服务器的端口
MASTER_PASSWORD : 设置要连接的主服务器的密码
MASTER_AUTO_POSITION : GTID模式,基于事务ID复制

7. 启动slave
start slave

8.查看slave状态 (Slave_IO_Running:YES 并且Slave_SQL_Running: Yes )
show slave statusG;

 slave常用命令

show master status;

show slave statusG;

stop slave;


start slave;

 

以上是关于mysql gtid复制的主要内容,如果未能解决你的问题,请参考以下文章

mysql 5.7多源复制如何去掉一个复制源

MySQL GTID复制报错跳过方法

MySQL GTID复制报错跳过方法

MySQL基于GTID的主从复制

MySQL5.7 传统复制到GTID复制

MySQL 基于GTID复制