MySQL主从复制与主主复制详述

主从复制:

1.环境说明:

准备两台linux虚拟主机
Linux版本CentOS7、MySQL 5.7.17
ip:192.168.1.1、192.168.1.2

2.创建复制账号

mysql会赋予一些特殊的权限给复制线程,在备库运行的I/O线程会建立一个到主库TCP/IP连接,这意味着必须在主库创建一个用户,并赋予其合适的权限,备库I/O线程以该用户名连接到主库并取其二进制日志;(摘自:高性能mysql => 复制)

在192.168.1.1 中创建一个192.168.1.2主机中可以登录的MySQL用户
//192.168.1.1 : 主数据库服务器:

mysql>GRANT REPLICATION SLAVE ON *.* TO 'tongbu'@'192.168.1.2' IDENTIFIED BY 'tongbu'; mysql>FLUSH PRIVILEGES;

MySQL主从复制与主主复制详述

注意1:这里我把这个账号限制在本地并且只有192.168.1.2这个主机可以访问,因为这是一个特殊权限的账号(尽管这个账号无法执行select或者update),但是任然能从二进制日志中获取一些数据(摘自:高性能mysql => 复制)

3.配置主库和备库

MySQL配置文件都在: /etc/my.cnf

1.在主库的my.cnf文件的[mysqld]下添加:log-bin,server_id(具体如下:) log-bin=mysql-bin # 开启二进制日志 server_id=10 # 0-232任取 但必须和其他数据库中的不同 (必须唯一)!

注意:二进制日志必须开启,因为数据的同步实质上就是其他的MySQL数据库服务器将这个数据变更的二进制日志在本机上再执行一遍。

2.保存后重启mysql 3.查看主库中MySQL服务器二进制文件名与位置 mysql>SHOW MASTER STATUS;

注意:这里重点关注File和Position这两项; 4.告知二进制文件名与位置

在备库中执行:

mysql>CHANGE MASTER TO >MASTER_HOST='192.168.1.1', >MASTER_USER='tongbu', >MASTER_PASSWORD='tongbu', >MASTER_LOG_FILE='mysql-bin.000001', >MASTER_LOG_POS=98;

MySQL主从复制与主主复制详述

完成主从复制配置

5.开启并查看

在备库中执行:

mysql>START SLAVE; #开启复制 mysql>SHOW SLAVE STATUS\G #查看主从复制是否配置成功

MySQL主从复制与主主复制详述

注意:当看到Slave_IO_Running: YES、Slave_SQL_Running: YES才表明状态正常(如有异常请看3.关于报错中提供的解决方案!)

主主复制:

1.设置配置文件(参考上面)

–192.168.1.1

server-id=11 #任意自然数n,只要保证两台MySQL主机不重复就可以了。 log-bin=mysql-bin #开启二进制日志 auto_increment_increment=2 #步进值auto_imcrement。一般有n台主MySQL就填n auto_increment_offset=1 #起始值。一般填第n台主MySQL。此时为第一台主MySQL binlog-ignore=mysql #忽略mysql库【我一般都不写】 binlog-ignore=information_schema #忽略information_schema库【我一般都不写】 replicate-do-db=aa #要同步的数据库,默认所有库

MySQL主从复制与主主复制详述

–192.168.1.2

server-id=12 log-bin=mysql-bin auto_increment_increment=2 auto_increment_offset=2 replicate-do-db=aa

MySQL主从复制与主主复制详述

配置好后重启MySQL

2.创建复制账号并配置二进制文件名与位置

第一步:
在192.168.1.1中创建一个192.168.1.2主机中可以登录的MySQL用户

mysql>GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.1.2' IDENTIFIED BY 'root'; mysql>FLUSH PRIVILEGES;

MySQL主从复制与主主复制详述

第二步:
在192.168.1.1查看二进制日志名和位置

mysql>show master status;

在192.168.1.2中执行:

mysql>CHANGE MASTER TO >MASTER_HOST='192.168.1.1', >MASTER_USER='root', >MASTER_PASSWORD='root', >MASTER_LOG_FILE='mysql-bin.000001', >MASTER_LOG_POS=98;

MySQL主从复制与主主复制详述

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6518a522f1996d7eeb81ead29cf1b6b9.html