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)