Jul9

MySQL复制Master-Slave架构搭建笔记

Author: leeon  Click: 8138   Date: 2010.07.09 @ 17:10:05 pm Category: 数据库

本文记述leeon在搭建MySQL Replication中的一些知识点和技巧。

1. 在Master机和Slave机中分别设置server-id为1和2,如果不设置server-id,那么slave会无法启动。因为默认my.cnf的server-id均为1。

2. 在Master机my.cnf中开启log-bin。

3. 为Master机中的MySQL开启一个用户权限,此用户为Slave机的MySQL从Master中获取数据用。


GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';

4. 执行


FLUSH TABLES WITH READ LOCK;

清空所有表和块写入语句。

5. 然后备份Master机中所有的数据,可以用mysqldump或者直接打包MySQL中的二进制文件。并将数据导入到Slave机的MySQL中。

6. 在Master机中执行:


SHOW MASTER STATUS;

记录下File 和 Position。

7.  关闭Master机的MySQL防止复制的数据和Slave的不一致。

8. 在Slave机中执行如下SQL:

 CHANGE MASTER TO MASTER_HOST='master_host_name', MASTER_USER='replication_user_name', MASTER_PASSWORD='replication_password', MASTER_LOG_FILE='recorded_log_file_name', MASTER_LOG_POS=recorded_log_position; 

master_host_name 为Master的Host

replication_user_name 为第三步中设置的用户名

replication_password 为第三步中设置的密码

recoded_log_file_name 为第六步中记录的file

recorded_log_position 为第六步中记录的position

9. 在Slave的MySQL中执行“START SLAVE”来启动slave服务。利用“SHOW SLAVE STATUS”观察“Slave_IO_Running”和“Slave_SQL_Running”是否均为YES,如果不为Yes则说明启动失败,要观察error提示。

10. 执行“show processlist”来观察MySQL中的master-slave服务是否正常。

正常情况下提示:

Master:
|  3 | rep  | 192.168.127.132:43625 | NULL | Binlog Dump | 3135 | Has sent all binlog to slave; waiting for binlog to be updated | NULL             |

Slave:
|  1 | system user |           | NULL | Connect |   3108 | Waiting for master to send event                                      | NULL             |
|  2 | system user |           | NULL | Connect | -25725 | Has read all relay log; waiting for the slave I/O thread to update it | NULL       

11. unlock tables。解锁Master机的MySQL。

----------------------------------------------------------------------------------------

补充:

Master 主要负责在Replication 环境中读取Master 端的binary 日志,以及与Slave 端的I/O 线程交互等工作。Slave 比Master 所要做的事情稍多一些,在系统中主要体现在两个线程上面。一个是负责从Master 请求和接受binary 日志,并写入本地relay log 中的I/O 线程。另外一个是负责从relay log中读取相关日志事件,然后解析成可以在Slave 端正确执行并得到和Master 端完全相同的结果的命令并再交给Slave 执行的SQL 线程。



TAG:   mysql master slave

    评论
    • 提交

    分类

    标签

    归档

    最新评论

    Abyss在00:04:28评论了
    Linux中ramdisk,tmpfs,ramfs的介绍与性能测试
    shallwe99在10:21:17评论了
    【原创】如何在微信小程序开发中正确的使用vant ui组件
    默一在09:04:53评论了
    Berkeley DB 由浅入深【转自架构师杨建】
    Memory在14:09:22评论了
    【原创】最佳PHP框架选择(phalcon,yaf,laravel,thinkphp,yii)
    leo在17:57:04评论了
    shell中使用while循环ssh的注意事项

    我看过的书

    链接

    其他

    访问本站种子 本站平均热度:8823 c° 本站链接数:1 个 本站标签数:464 个 本站被评论次数:94 次