mysql主主同步
前言:
192.168.1.111和192.168.1.222数据库主主同步,192.168.1.111里面有数据
一、 给111添加同步账号
mysql> CREATE USER 'replicator'@'%' IDENTIFIED BY '密码';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
mysql> FLUSH PRIVILEGES;
二、 给111添加主服务器配置,并重启数据库
vim /etc/my.cnf
[mysqld]
#使用IP跳过主机名检查
skip-name-resolve
#多线程利用
#这个参数控制 InnoDB 存储引擎的并发线程数。可以根据你的 CPU 核心数进行调整,通常设置为 CPU 核心数的 2 倍
innodb_thread_concurrency = 32
#这两个参数可以设置 InnoDB 的读写 I/O 线程数。可以根据 CPU 核心数进行调整,通常设置为 4 或更多。
innodb_read_io_threads = 4
innodb_write_io_threads = 4
#可以减少操作系统的缓存影响,从而提高性能。
innodb_flush_method = O_DIRECT
#不同步的数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=test
binlog-ignore-db=sys
#主从同步相关配置
server-id=2
log-bin=/soft/mysql/var/log/binlog/binlog.log
binlog_format=MIXED
expire_logs_days=30
#自增ID配置
auto_increment_increment = 2
auto_increment_offset = 2 # 偶数 ID
三、 设置222从配置,并重启数据库
vim /etc/my.cnf
[mysqld]
#使用IP跳过主机名检查
skip-name-resolve
#多线程利用
#这个参数控制 InnoDB 存储引擎的并发线程数。可以根据你的 CPU 核心数进行调整,通常设置为 CPU 核心数的 2 倍
innodb_thread_concurrency = 32
#这两个参数可以设置 InnoDB 的读写 I/O 线程数。可以根据 CPU 核心数进行调整,通常设置为 4 或更多。
innodb_read_io_threads = 4
innodb_write_io_threads = 4
#可以减少操作系统的缓存影响,从而提高性能。
innodb_flush_method = O_DIRECT
#不同步的数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=test
binlog-ignore-db=sys
#主从同步相关配置
server-id=3
relay-log=/cpcnet/mysql/var/log/relaylog/relaylog.log
binlog_format=MIXED
expire_logs_days=30
sync_binlog = 0
#自增ID配置
auto_increment_increment = 2
auto_increment_offset = 1 # 奇数 ID
四、111导出全部数据
mysqldump --source-data --single-transaction --skip-tz-utc -uroot -p'密码' --all-databases > /soft/baksql/all_databases_backup.sql
五、222导入数据
mysql -uroot -p'密码' < /cpcnet/baksql/all_databases_backup.sql
六、查看数据指针
cat all_databases_backup.sql | grep "CHANGE MASTER TO MASTER_LOG_FILE"
七、222数据库设置同步信息
#暂停同步
STOP SLAVE;
#重置同步信息
RESET SLAVE;
#设置同步信息,MASTER_LOG_FILE,MASTER_LOG_POS这两个值就是第6步查询到的
CHANGE MASTER TO
MASTER_HOST='192.168.1.111',
MASTER_PORT=3306,
MASTER_USER='replicator',
MASTER_PASSWORD='密码',
MASTER_LOG_FILE='binlog.000001',
MASTER_LOG_POS=57013775;
#启动同步
START SLAVE;
#查看同步信息
SHOW SLAVE STATUS\G;
参数说明:
这两项Yes代表同步正常运行
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
需要查看这个指针是否在变化,如果没有变化需要查看原因
Exec_Master_Log_Pos: 16125343
查看从服务器与主服务器数据相差多长时间,正常应该是0
Seconds_Behind_Master: 0
八、主从没问题后,开始设置主主同步,设置222主配置,并重启数据库
vim /etc/my.cnf
[mysqld]
log-bin=/cpcnet/mysql/var/log/binlog/binlog.log
九、设置111从配置,并重启数据库
vim /etc/my.cnf
[mysqld]
relay-log=/soft/mysql/var/log/relay/relaylog.log
十、 进入数据库,查询222指针
SHOW MASTER STATUS;
十一、设置111同步222的配置
#暂停同步
STOP SLAVE;
#重置同步信息
RESET SLAVE;
#设置同步信息,MASTER_LOG_FILE,MASTER_LOG_POS这两个值就是第10步查询到的
CHANGE MASTER TO
MASTER_HOST='192.168.1.222',
MASTER_PORT=3306,
MASTER_USER='replicator',
MASTER_PASSWORD='密码',
MASTER_LOG_FILE='binlog.000001',
MASTER_LOG_POS=691;
#启动同步
START SLAVE;
#查看同步信息
SHOW SLAVE STATUS\G;
十二、扩展命令
1.查看进程列表
SHOW PROCESSLIST;
结束进程
kill 1;
2.查看指针当前执行的SQL
Relay_Log_File: relaylog.000024
Exec_Master_Log_Pos: 737689697
进入日志目录
cd /cpcnet/mysql/var/log/relaylog
在mysql安装目录执行
/usr/local/mysql/bin/mysqlbinlog -vvv relaylog.000024 | grep -i -B 30 -A 10 "737689697"
3.如果同步失败,跳过一步
STOP SLAVE ;
SET GLOBAL sql_slave_skip_counter=1;
START SLAVE;
赞(1)
赏