Linux下mysql数据库一主一从同步配置

来源:互联网 发布:it管理体系 编辑:程序博客网 时间:2024/06/05 07:12

MySQL主从同步配置

mmj 16.09.29

1.确认运行环境

1.1确认主从IP

主服务器(master):192.168.3.10

从服务器(slave):192.168.3.18

1.2确认数据库版本

都为5.5.31



2.主服务器上配置

2.1修改MySQL配置文件

路径: /etc/mysql/my.cnf

添加以下内容:在[mysqld]下方

server-id=1

log-bin=mysql-bin

binlog-do-db=tt

binlog-ignore-db=js_xy

其中server-id是服务器id

log-bin=mysql-bin启用二进制日志

binlog-do-db是需要同步的数据库



2.2重启service

在命令行:sudo/etc/init.d/mysql restart

(Win中可以在服务中停止,再开启服务)

如果重启失败:说明设置的参数不正确(检查大小写,空格,单词拼写)



2.3注册用户

2.3.1注册可访问主库文件的用户

root登录输入:grantreplication slave on *.* to 'slave'@'%' identified by '123456';

给所有ip分配一个访问二进制文件权限的用户slave.

2.3.2从库连接测试

在从库上进行测试 slave用户是否能连接到主库的mysql:mysql -h 192.168.3.10 -uslave -p123456



2.4展示主库日志信息

(前提:在此时数据库不能进行数据交互。否则就要进行锁表)

mysql>showmaster status;

例子:

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

|File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

|mysql-bin.000011 | 107 |tt |js_xy |

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

1row in set (0.00 sec)



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



记录下 : mysql-bin.000011 107



3.从服务器上配置(Windows也适用)

3.1修改MySQL配置文件

路径:/etc/mysql/my.cnfwin上是my.ini

server_id=2

log-bin=mysql-bin

replicate-do-db=tt

replicate-ignore-db=mysql

保证server-id和主库不同



3.2重启server= 2.2步骤

3.3设置同步

3.3.1重置同步

清除此前可能进行的同步配置 :mysql> reset slave;

3.3.2停止同步

停止同步,默认同步是开启的:mysql>slavestop;

3.3.3配置同步

mysql>changemaster to

master_host='192.168.3.10',

master_user='slave',

master_password='123456',

master_log_file='mysql-bin.000011',

master_log_pos=107

master_host表示是主库的IP

master_user表示主库master上允许同步的用户

maser_password表示同步用户的密码

master_log_file表示从哪个binlog文件开始同步

master_log_pos表示从该binlog文件的那个pos节点位置开始同步.

注意:master_log_filemaster_log_pos,就是我们在第四步记录的binlog文件名和pos位置节点。



3.3.4开启同步

重新开启同步 :mysql>slavestart;



3.4查看同步状态

mysql>show slave status\G;

当命令窗信息中 Slave_IO_RunningYES同时Slave_SQL_RunningYES

说明此时同步已经配置成功了!

如果Slave_IO_RunningNO,说明可能是从库与主库的网络不通。

如果Slave_SQL_RunningNO,说明很可能是从库与主库的数据不一致。

可能原因有:

1.防火墙

2.selinux

3.网络通不通

4.pos不对

5.配置打错

6.更改配置或其他操作以后:slavestop然后再slavestart

7.进行3.3.1重置同步


1 0