mysql--主从(双主)简单配置

1.主服务器 172.16.20.228
备份 mysqldump -uroot -p123 --all-databases > /bak/all.sql
将全备拷贝到从机,并且从机恢复数据 scp root@172.16.20.228:/bak/all.mysql /bak/mysql //在从服务器中cp主服务器的all.sql文件
在从服务器172.16.20.233 // 回复数据(mysql -uroot -p123 < /bak/all.sql)

2.在配置文件 /etc/my.cnf 中 mysqld 下 加一句 log-bin
server-id=1
mysqld --user=mysql --log-error=/tmp/mysql.log --log-bin --server-id=1 //开启二进制日志

开启binlog日志
vim /etc/my.cnf
[mysqld]
log-bin=master
log-bin-index=master
server-id=1

3.授权B服务器 可以传输binlog日志
grant replication slave on *.* to slave@'172.16.20.233' identified by '123';

从服务器
B ip 172.16.20.233
1.测试slave是否能正常链接
mysql -u slave -p123 -h 172.16.20.228

2.拷贝A服务器的全备,并且恢复
scp 172.16.20.228:/bak/all.sql /bak/all.sql
mysql -u root -p123 < /root/all.sql

3.配置A服务器连接地址及用户信息
vim /etc/my.cnf
[mysqld]
server-id=2
4.
mysql> flush logs;
Query OK, 0 rows affected (0.08 sec)

mysql> show master status\G;
*************************** 1. row ***************************
File: localhost-bin.000004
Position: 154
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)

ERROR:
No query specified

在主服务器 show master status\G;

登录从服务器 mysql -uroot -p123
stop slave;
change master to master_host='172.16.20.228',master_user='slave',master_password='123',master_port=3306, master_log_file='localhost-bin.000004',master_log_pos=154;
此处为主服务器show master status 内的内容

start slave;
5. show slave status\G

Relay_Master_Log_File: localhost-bin.000004
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

主服务器做出数据改动 查看从服务器是否有同步的变化

===============================================
mysqlbinlog --no-defaults mysql-bin.000002 //看 log-bin 日志
================================================

主从注意事项

在master上提交事务后,并且写入binlog,返回事务成功标记;
将binlog发送到slave,转储成relay log;
在slave上再将relay log读取出来应用。
步骤1和步骤3之间是异步进行的,无需等待确认各自的状态,所以说MySQL replication是异步的。
MySQL semi-sync replication在之前的基础上做了加强完善
=============================================================================
有的时候主从同步有问题了以后,需要从log位置的下一个位置进行同步,相当于跳过那个错误,这时候也可以使用CHANGE MASTER命令来处理,只要找到对应的LOG位置就可以,比如:
CHANGE MASTER TO MASTER_HOST='10.1.1.75',MASTER_USER='replication',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=106;
START SLAVE;
==================================================================

MYSQL主从同步的管理经验介绍
1. 不要乱使用SQL_SLAVE_SKIP_COUNTER命令。

这个命令跳过之后很可能会导致你的主从数据不一致,一定要先将指定的错误记录下来,然后再去检查数据是否一致,尤其是核心的业务数据。
2. 结合percona-toolkit工具pt-table-checksum定期查看数据是否一致。
这个是DBA必须要定期做的事情,呵呵,有合适的工具何乐而不为呢?另外percona-toolkit还提供了对数据库不一致的解决方案,可以采用pt-table-sync,这个工具不会更改主的数据。还可以使用pt-heartbeat来查看从服务器的复制落后情况。
3. 使用replicate-wild-ignore-table选项而不要使用replicate-do-db或者replicate-ignore-db。
原因已经在上面做了说明。
4. 将主服务器的日志模式调整成mixed
5. 每个表都加上主键,主键对数据库的同步会有影响尤其是居于ROW复制模式。

 

 

 

 

 











posted @ 2018-11-19 17:27  木易-故事里的人  阅读(152)  评论(0编辑  收藏  举报