您的位置:首页 > 数据库 > MySQL

mysql的主从同步

2015-09-07 11:45 537 查看
以我的博客的wordpress数据库同步为例。

1.搞一台服务器,apt-get install mysql-client mysql-server,设置mysql user root用户名,密码。

2.修改配置/etc/mysql/my.conf

对于主机:

bind-address = 0.0.0.0

server-id = 1

log_bin = /var/log/mysql/mysql-bin.log

read-only = 0

对于从库

bind-address = 0.0.0.0

server-id = 2

log_bin = /var/log/mysql/mysql-bin.log

read-only = 1

replicate-do-db = wordpress

3.对于主库:

flush tables with read lock;

4.开始备份

mysqldump -h localhost -u root -p wordpress > wordpress.sql

5.把备份数据同步到从库

同步之前要先创建表

create database wordpress;

mysql -h localhost -u root -p wordpress < wordpress.sql

6.对于主库:

unlock tables;

7.创建主库的replicationuser和从库的replicationuser并且

主库中提供对从库的授权

grant replication slave on *.* to ‘replicationuser’@'mysqlslave’ identified by ‘password’;

8.看master的状态

mysql> show master status;

+——————+———-+————–+——————+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+——————+———-+————–+——————+

| mysql-bin.000001 | 107 | | |

+——————+———-+————–+——————+

8.对从库

change master to MASTER_HOST=’10.128.0.187′, MASTER_USER=’replicationuser’,MASTER_PASSWORD=’62717038′, MASTER_LOG_FILE=’mysql-bin.000001′, MASTER_LOG_POS=107;

slave start;

如果出现数据同步不过来,也可以通过reset master来解决。

对master

reset master;

对slave

stop slave;

change master to MASTER_HOST=’10.128.0.187′, MASTER_USER=’replicationuser’,MASTER_PASSWORD=’62717038′, MASTER_LOG_FILE=’mysql-bin.000001′, MASTER_LOG_POS=107;

reset slave;

start slave;

结果遇到了问题, reset master之后,主库发的binlog一直无法同步到从库。追查了半天才发现,把旧的mytest表删除,换成新的mytest2,就能同步进去了。

写这篇帖子里,这篇帖子的数据会自动同步到另一台机器上。

在这个过程中,发现:

1.所有的修改,不光是wordpress,都会写到binlog中。

可以通过

mysqlbinlog /var/log/mysql/mysql-bin.000001

查看binlog

2.可以通过reset master;来清除master 的binlog日志

3.在mysql -uroot -p wordpress < wordpress.sql之前要先创建一个空的database
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: