您的位置:首页 > 运维架构 > Linux

记一次MySQL 主从配置(linux到windows)

2018-02-28 14:00 405 查看
测试环境:

主:centOS 6.4 mysql:5.7.17

从:windows 10 mysql:5.7.21

配置主数据库

mysql> show variables like '%log_bin%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin                         | OFF   |
| log_bin_basename                |       |
| log_bin_index                   |       |
| log_bin_trust_function_creators | OFF   |
| log_bin_use_v1_row_events       | OFF   |
| sql_log_bin                     | ON    |
+---------------------------------+-------+
6 rows in set (0.01 sec)


日志未开启,需开启日志。

修改配置文件 /ect/my.cnf: 添加如下

[mysqld]
log-bin=mysql-bin
#server-id要唯一
server-id=1
#日志过期时间
expire_logs_days=8
log-bin=mysql-bin
#需要同步的数据库名称
replicate-do-db=test


添加授权用户 rep 密码123456 进行复制:

mysql> grant replication slave on *.* to 'rep'@'%' identified by '123456';


注:% 表所有ip。可以指定。

查看是否添加成功:

mysql> select distinct concat('User:''',user,'''@''',host,''';') as query from mysql.user;
+-----------------------------------+
| query                             |
+-----------------------------------+
| User:'rep'@'%';                   |
| User:'root'@'%';                  |
| User:'mysql.session'@'localhost'; |
| User:'mysql.sys'@'localhost';     |
| User:'root'@'localhost';          |
+-----------------------------------+
5 rows in set (0.00 sec)


刷新所有表,然后加锁:

mysql > flush tables with read lock;


查看 master 二进制日志:

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      436 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)


解锁数据库:

mysql > unlock tables;


配置从数据库

修改配置文件(我的slave是windows):

[mysqld]

# 设置mysql的安装目录
basedir=E:\Program Files\mysql-5.7.21-winx64
# 设置mysql数据库的数据的存放目录
datadir=E:\Program Files\mysql-5.7.21-winx64\data

server-id=2

replicate-do-db=test
#配置relay-log路径,这里不配置也会报错。。。按理说应该有默认路径,我后来加的
relay-log=E:\Program Files\mysql-5.7.21-winx64\data


注意开启主从同步前,应保证主从数据一致,把主数据库先手动复制到从数据库,我开始以为配置好了之后可以自己创建,真是太年轻。。报错,因为从库没有主库的数据库等问题

从库启动之后,

reset slave;

mysql> change master to
-> master_host ='192.168.88.129',
-> master_user='rep',  //远程连接用户,就是上面建的那个
-> master_password='123456',//密码
-> master_log_file='mysql-bin.000003',//master日志名
-> master_log_pos=154; //同步点,也是上面查看到的


检查slave 状态:

mysql> start slave;
Query OK, 0 rows affected (0.07 sec)

mysql> show slave status\G;




可以看到slave 已经起来了。

在主master里面插入一条测试数据:



到从数据库查看:



若出现错误,一般是主从数据不一致导致的,开启同步前切记保持数据一致。

另外,mysql支持从低版本复制到高版本,但是不能从高版本复制到低版本,无法保证新特性在低版本适用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: