mysql数据库的主从复制和主主复制实践

准备:

  • 两台装上phpstudy集成环境的计算机(过程忽略)
  • 固定两台电脑的ip(因为mysql数据库是通过ip进行连接,自动获取ip会导致下次重启电脑时,连接就会失效)

步骤1:找到网络连接信息
mysql数据库的主从复制和主主复制实践_第1张图片
步骤2:创建文本文件,将连接信息记录下来
mysql数据库的主从复制和主主复制实践_第2张图片
步骤3:将文本记录信息复制到ipv4属性里面
mysql数据库的主从复制和主主复制实践_第3张图片
步骤4:查看详细信息,配置成功
mysql数据库的主从复制和主主复制实践_第4张图片

扩展:

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在RFC 2131中有详细的描述。


主从复制:

理解:

mysql数据库的主从复制和主主复制实践_第5张图片

配置主数据库服务器

找到主数据库的配置文件my.cnf(或者my.ini),我的在/etc/mysql/my.cnf,在[mysqld]部分插入如下两行:

log-bin=mysql-bin #开启二进制日志
server-id=1 #设置server-id

mysql数据库的主从复制和主主复制实践_第6张图片

在其中一台计算机上进入mysql命令界面

mysql数据库的主从复制和主主复制实践_第7张图片

创建用于从服务器连接的用户账号并授权

CREATE USER 'user1'@'192.168.1.101' IDENTIFIED BY 'user1';#创建用户
GRANT REPLICATION SLAVE ON *.* TO 'user1'@'192.168.1.101';#分配权限
flush privileges;   #刷新权限

mysql数据库的主从复制和主主复制实践_第8张图片

查看master状态,记录二进制文件名和位置

SHOW master STATUS;

这里写图片描述

配置从数据库服务器

找到从数据库的配置文件my.cnf(或者my.ini),插入唯一服务id:

server-id=2 #设置server-id,必须与其他服务器不一样

.打开mysql会话,执行以下SQL语句

CHANGE MASTER TO
MASTER_HOST='192.168.1.101',#主数据库服务器ip
MASTER_USER='user1',#访问主数据库服务器的用户名
MASTER_PASSWORD='user1',#访问主数据库服务器的密码
MASTER_LOG_FILE='mysql-bin.000002',#主数据库服务器开启的二进制文件名
MASTER_LOG_POS=73;#主数据库服务器开启的二进制文件名的位置

启动slave同步master

start slave;

查看slave状态

show slave status\G;

这里写图片描述

主主复制

就是按照主从复制的步骤,将原来的从数据库服务器当做主数据库服务器配置,同理,原来的主数据库服务器当做从数据库服务器配置,这样就可以实现无论哪个服务器插入数据,其他主服务器都能实现数据同步

  • 注意:在配置的时候我们需要注意一些问题,例如,主键重复,server-id不能重复等等。

关于主主的配置

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   #要同步的数据库,默认所有库

注意事项

  • 主主复制配置文件中auto_increment_incrementauto_increment_offset只能保证主键不重复,却不能保证主键有序。
  • 当配置完成Slave_IO_Running、Slave_SQL_Running不全为YES时,show slave status\G信息中有错误提示,可根据错误提示进行更正。
  • Slave_IO_Running、Slave_SQL_Running不全为YES时,大多数问题都是数据不统一导致。

    常见出错点:

    1、两台数据库都存在db数据库,而第一台MySQL db中有tab1,第二台MySQL db中没有tab1,那肯定不能成功。

    2、已经获取了数据的二进制日志名和位置,又进行了数据操作,导致POS发生变更。在配置CHANGE MASTER时还是用到之前的POS

    3、stop slave后,数据变更,再start slave。出错。

    终极更正法:重新执行一遍CHANGE MASTER就好了。

你可能感兴趣的:(mysql,优化)