Mysql 5.5 主从复制

来源:互联网 发布:电脑图片编辑软件 编辑:程序博客网 时间:2024/05/17 23:24

小白一枚,接触PHP不久,今天弄好了主从复制,分享下。

本人是在win服务器下测试成功 ,linux没有测试。有兴趣的朋友可以测试下。


接下来是代码部分了。


MySQL主从同步介绍

    MySQL 支持单双向、链式级联、异步复制。在复制过程中,一个服务器充当主服务器(Master),而一个或多个其它的服务器充当从服务器(Slave)。
    如果设置了链式级联复制,那么,从(slave)服务器本身除了充当从服务器外,也会同时充当其下面从服务器的主服务器。链式级联复制类似A->B ->C ->D 的复制形式。
    当配置好主从复制后,所有对数据库内容的更新就必须在主服务器上进行,以避免用户对主服务器上数据内容的更新与对从服务器上数据库内容的更新之间发生冲突。生产环境中一般会,忽略授权表同步,然后对从服务器上的而用户授权select读权限,或在my.cnf配置文件中加read-only 参数来确保从库只读,当然二者同时操作效果更佳。

MySQL主从复制的原理

MySQL 主从复制是一个异步复制过程(但看起来也是实时的),数据库数据从一个MySQL数据库(我们称为Master)复制到另一个MySQL数据库(我们称之为Slave)。在Master和Slave之间实现整个主从复制的过程有三个线程参与完成。其中两个线程(SQL线程和IO线程)在Slave端,另一个线程(IO线程)在Master端。
   要实现MySQL的主从复制,首先必须打开Master端的Binlog(MySQL-bin.XXXXX)功能,否则无法实现主从复制。因为整个复制过程实际上就是Slave从Master端获取Binlog日志,然后再在Slave自身上以相同顺序执行binlog日志中所记录的各种操作。打开MySQL的binlog可以通过MySQL的配置文件my.cnf中的mysqld模块([mysqld]标识后的参数部分)添加“log-bin”参数项。


/*MySQL配置部分*/
Master端
在 my.ini 配置文件中找到mysqld(不管用的什么环境安装器wampserver等等)新增如下节点
server-id=200
log-bin=mysql-bin
relay-log=relay-bin
relay-log-index=relay-bin-index
重启 master mysql的服务

/*配置slave*/
一样找到 my.ini  文件
server-id=210
replicate-do-db=复制的数据库名
重新 slave 服务

/*重要部分来了*/
在从服务器打开mysql命令界面

mysql> stop slave;
mysql> change master to master_host='192.168.1.200',master_user='backup',master_password='123456',master_log_file='mysql-bin.000024',master_log_pos=1143;
/*这里的 pos 和file 是从master获取(在master 执行命令 show master status) */

mysql> start slave;
mysql> show slave status\G;



/出现YES就可以测试主从复制

出现Slave_IO_Running:Connecting (检查用户权限是否可以链接。建议不要使用root,)

出现Slave_IO_Running:No (检查POS 和bin 是否正确)



附master pos 获取方式(注意是在master服务器)




0 0
原创粉丝点击