一、master:(虚拟机cenOS7上)java
a:ip:192.168.35.129
mysql
b:修改 my.cnf
sql
# 为了区分不一样的mysql程序(只要mysql程序的数惟一) server-id=2 # master的执行语句记录位置(slaver主要就是复制这上面的sql语句进行同步) log-bin=master-bin
c:访问用户及权限
centos
重启: #:service mysql restart 添加slaver的权限 # mysql -u root -p # grant replication slave on *.* to 'sl'@'192.168.35.1' identified by '1234'; # flush privileges;
d:查看状态tcp
#:show master status; 以下: mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | master-bin.00001 | 154 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.01 sec)
f:防火墙(centos7使用的是firewall)
ide
一、查看firewall是否打开了 3306端口 #:firewall-cmd --list-all 二、打开端口 #:firewall-cmd --add-port=3306/tcp --pernament
二、slaver (window上)
ui
a:ip:192.168.35.1
centos7
b:修改 my.cnf
spa
# 为了区分不一样的mysql程序(只要mysql之间的数惟一) server-id=3
c:开启slaverrest
一、修改master mysql> CHANGE MASTER TO MASTER_HOST='192.168.35.129', MASTER_USER='sl',MASTER_PASSWORD='123', MASTER_LOG_FILE='master-bin.000001',MASTER_LOG_POS=0; (最后这一个是slaver从master日志第几行开始执行,通常出问题了都会在问题解决后,修改这一行) 二、开启 mysql> start slave; 三、开启状态 mysql> show slave status\G;
(ps:红色的两个参数最重要,正常工做须要这两个都是YES)
三、错误处理
问题:
在master添加一个库:create database temp; 而这个时候slave早就有了这个表。slave就会关闭同步。以下
处理:(在slave中)
一、关闭 slave mysql > stop slave; 二、删除temp库 mysql > drop database temp; 三、修改存放的master信息(主要是 MASTER_LOG_POS,就是上图的 Exec_Master_Log_Pos.) mysql> CHANGE MASTER TO MASTER_HOST='192.168.35.129', MASTER_USER='fxl',MASTER_PASSWORD='123', MASTER_LOG_FILE='mater-bin.000015',MASTER_LOG_POS=456; 四、启动 mysql> start slave; 五、查看 mysql> show slave status\G; (若是 Slave_IO_Running和Slave_SQL_Running都是YES,也就正常了)
一、主主同步就是相互主从同步的关系。
二、主键处理须要将自增数分开<奇偶>(最好是使用uuid)
auto-increment-increment = 2 //每次增加2 auto-increment-offset = 2 //设置自动增加的字段的偏移量,即初始值为2