在主主复制结构中,两台服务器的任何一台上面的数据库存发生了改变都会同步到另一台服务器上,这样两台服务器互为主从,并且都能向外提供服务。配置的时候需要注意:主键重复,server-id不能重复。
1.新建数据库
Ubuntu16.04,开启两个虚拟机。
配置前,两个MySQL分别新建一个数据库,保证的test数据库的数据一致
create database test default character set utf8 default collate utf8_general_ci;
2.修改配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
服务器A(192.168.8.129)配置如下
bind-address = 0.0.0.0
log_bin = /var/log/mysql/mysql-bin.log #开启二进制日志
server-id = 1 #任意自然数n,只要保证两台MySQL主机不重复即可
expire-logs-days = 100
replicate-do-db = test #要同步的数据库,默认所有库
binlog-ignore-db = mysql #忽略mysql库
binlog-ignore-db = information_schema #忽略information_schema库
auto-increment-increment = 2 #步进值,有n台主MySQL就填n
auto-increment-offset = 1 #起始值。第n台主MySQL,此时为第1主MySQL
嘉荫网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联建站于2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站。
服务器B(192.168.8.131)配置
bind-address = 0.0.0.0
log_bin = /var/log/mysql/mysql-bin.log
server-id = 2
expire-logs-days = 100
replicate-do-db = test
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
auto-increment-increment = 2
auto-increment-offset = 2 #起始值,第2台主MySQL
二者只有server-id不同和 auto-increment- offset不同
auto-increment-offset是用来设定数据库中自动增长的起点的,两个服务器都设定了一次自动增长值2,所以它们的起点必须得不同,这样才能避免两台服务器数据同步时出现主键冲突
replicate-do-db 指定同步的数据库,我们只在两台服务器间同步test数据库。auto-increment-increment的值应设为整个结构中服务器的总数,本例用到两台服务器,所以值设为2
3.重启mysql服务
/etc/init.d/mysql restart
4.创建共享用户
创建一个可以在另一台主机上登录的MySQL用户repl
看是否有mysql中是否有repl这个用户
use mysql;
select user from user;
若没有的话,新建用户
create user 'repl'@'%' IDENTIFIED BY 'passwd';
grant replication slave on . to 'repl'@'%';
flush privileges;
查看repl用户的权限
show grants for 'repl'@'%';
5.测试是否能够远程登录
在服务器A上(192.168.8.129)
mysql -h 192.168.8.131 -u repl –p
输入口令jvkpxdYrlz
若成功,则继续下一步
若失败,检查mysqld.cnf文件中的配置,可能因为bind-address=127.0.0.1导致,使得仅允许本机访问。
test_user
(id
int NOT NULL AUTO_INCREMENT PRIMARY KEY,createtime
datetime NOT NULL DEFAULT CURRENT_TIMESTAMP);参考网址https://www.cnblogs.com/zping/p/5315827.html
https://www.cnblogs.com/phpstudy2015-6/p/6485819.html#_label7