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

mysql5.6版本-主从复制配置详细步骤

2016-04-27 09:09 686 查看
准备工作:
在两台服务器上安装同版本mysql数据库;

确保mysql主从服务器之间的数据库端口防火墙互相打开;

确保主从数据库账户一致性(主从切换使用),否则将操作失败;

确保mysql账户对mysql数据库目录有“可读写”权限非“可写”权限chown-Rmysql:mysql/path,

确保不出意外,最好删除mysql之前陈旧的mysql-bin、mysql日志,然后重启mysql;

查看版本:mysql>status\G;

一、在主库创建用户

mysql>createuserbackup;//创建新用户
mysql>GRANTREPLICATIONSLAVEON*.*TO'backup'@'192.168.76.%'IDENTIFIEDBY'mysql';//repl用户必须具有REPLICATIONSLAVE权限,除此之外没有必要添加不必要的权限,密码为mysql。说明一下192.168.0.%,这个配置是指明repl用户所在服务器,这里%是通配符,表示192.168.0.0-192.168.0.255的Server都可以以repl用户登陆主服务器。当然你也可以指定固定Ip。


二、修改主数据库的配置文件/etc/my.cnf(其他参数保持,以下为新增)

[mysqld]
server-id=1//[必须]默认是1,一般取IP最后一段
log-bin=mysql-bin.log//[主从必须]启用二进制日志,默认在mysql路径下
sync_binlog=1//为了保证事务InnoDB复制设置的最大可能的耐受性和一致性,应在主服务器使用
innodb_flush_log_at_trx_commit=1//同上


三、修改从数据库的配置文件/etc/my.cnf

[mysqld]
port=3306
server-id=2//从库配置编号
bing-address=0.0.0.0//[可选]意思是允许所有机器服务器安全起见可设置为指定的服务器IP地址如116.128.1.10等
log-bin=mysql-bin.log//[主从必须]启用二进制日志,默认在mysql路径下
binlog-do-db=new_test(要记录的数据库,多个可换行多次设置)
replicate-do-db=new_test(要复制的数据库,多个可换行过个设置)
binlog-ignore-db=mysql//不对mysql库进行日志记录操作如下意思雷同
binlog-ignore-db=test
replicate-ignore-db=test//不对test进行复制操作如下意思雷同
replicate-ignore-db=mysql
binlog-ignore-db=mysql//不对mysql库进行日志记录操作如下意思雷同
binlog-ignore-db=test
replicate-ignore-db=test//不对test进行复制操作如下意思雷同
replicate-ignore-db=mysql


四、重启两台服务器的mysql

servicemysqlrestart

五、登录主服务器的mysql,查询master的状态(可在phpmyadmin中执行次操作)

mysql>showmasterstatus;

+------------------+----------+--------------+------------------+

|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|

+------------------+----------+--------------+------------------+

|mysql-bin.000001|120|||

+------------------+----------+--------------+------------------+

1rowinset(0.00sec)

注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

六、配置从服务器Slave(5.1以后的版本不支持在my.cnf中配置主库信息了,如下用命令配置):

mysql>changemastertomaster_host='xx.xx.xx.xx',master_port=3306,master_user='backup',master_password='yourpasswd',master_log_file='mysql-bin.000001',master_log_pos=120//注意不要断开,master_port为mysql服务器端口号(无引号),master_user为执行同步操作的数据库账户,“120”无单引号(此处的120就是showmasterstatus中看到的position的值,这里的mysql-bin.000001就是file对应的值)。(此处可在从服务器phpmyadmin中用sql语句操作)
Mysql>startslave;//启动从服务器复制功能(可在phpmyadmin中执行该SQL语句)


如果需要修改:
1.Slave:stop
slave;

2.Master:flushlogs

3.Master:showmasterstatus;
—takenoteofthemasterlogfileandmasterlogposition

4.Slave:CHANGEMASTERTOMASTER_LOG_FILE=’log-bin.00000X′,
MASTER_LOG_POS=106;

5.Slave:start
slave;
修改完了一定记得要启动startslave,否则用show的时候看到的是旧的配置

七、检查从服务器复制功能状态:

mysql>showslavestatus\G(可在从服务器phpmyadmin中执行“showslavestatus”SQL语句)

***************************1.row***************************

……………………(省略部分)

Slave_IO_Running:Yes//此状态必须YES

Slave_SQL_Running:Yes//此状态必须YES

……………………(省略部分)

注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

以上操作过程,主从服务器配置完成。

八、测试是否正常复制,在主库创建文件,从库更新

Refs:
http://www.2cto.com/database/201404/295950.html主要参考
http://www.linuxidc.com/Linux/2014-06/103752.htm5.6版本
/article/5828849.html清晰但版本过老,my.cnf已经不能写入master信息了
/article/6645015.html5.5版本
/article/1240897.html复制原理详细
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: