mysql实现主从复制

来源:互联网 发布:算法设计 中文版 编辑:程序博客网 时间:2024/05/17 08:24

mysql实现主从复制

  • 首先你需要准备一台虚拟机来做主机;修改配置mysql的配置文件,一般是子啊/etc/my.cnf
  • 修改配置文件如下
    log-bin=mysql-bin //将mysql二进制日志取名为mysql-bin

    binlog_format=mixed //二进制日志的格式,有三种:statement/row/mixed,具体分别不多做解释,这里使用mixed

    server-id=101 //为服务器设置一个独一无二的id便于区分,这里使用ip地址的最后一位充当server-id

  • 从数据库也同样进行如下操作,然后通过show master status 进行查看,正常会显示为
    这里写图片描述

  • 若配置未成功会显示
    这里写图片描述
  • 备份master的数据
    方法1:数据前先锁表,保证数据一致性
    mysql> FLUSH TABLES WITH READ LOCK;
    mysql> SHOW MASTER STATUS;

  • 记录文件名和pos号开始备份数据库
    mysqldump -uroot -p mydb > /tmp/mydb.sql
    备份完毕,现在可以解锁数据库表
    MySQL> UNLOCK TABLES;

  • 方法2:使用–lock-all-tables和–master-data参数结合,导出数据
    mysqldump -uroot -p –hex-blob –lock-all-tables -R –triggers –databases mydb –master-data=2 –default-character-set=’utf8’ –quick> /tmp/mydb.sql

  • 拷贝备份文件到slave,并导入
    scp /tmp/mydb.sql mysql -uroot -p -B mydb /tmp/mydb.sql

  • 在slave上同步binlog
    mysql>CHANGE MASTER TO MASTER_HOST='192.168.247.128',MASTER_USER='repl',MASTER_PASSWORD='pwd',MASTER_LOG_FILE='mysql-bin.000015',MASTER_LOG_POS=1273;

    • 如果是方法2导出的数据,则通过以下语句查询binlog文件名和pos位置:

grep -i "CHANGE MASTER TO" /tmp/mydb.sql
--CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000015', MASTER_LOG_POS=1273

在slave中同样也进行再/etc/my.cnf下面的配置,然后service mysql restart重启服务
通过 show master status查看是否看起二进制文件配置
然后通过
mysql> CHANGE MASTER TO MASTER_HOST='server',
-> MASTER_USER='xxx',
-> MASTER_PASSWORD='xxx',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=0
//master中二进制文件的位置

然后在通过show slave status查看复制状态
***************** 1. row *****************
Slave_IO_State:
Master_Host: server1
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 4
Relay_Log_File: mysql-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: No
Slave_SQL_Running: No
…omitted…
Seconds_Behind_Master: NULL

Slave_IO_State, Slave_IO_Running, 和Slave_SQL_Running是No
开启复制
mysql> START slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

通过show slave status查看将会发现
Slave_IO_State, Slave_IO_Running, 和Slave_SQL_Running是yes
说明配置成功了

参考

http://blog.csdn.net/hguisu/article/details/7325124

1 0
原创粉丝点击