欢迎投稿

今日深度:

MySQL5.7到MariaDB10.2的主从同步,

MySQL5.7到MariaDB10.2的主从同步,


MariaDB和MySQL本是同根生,所以用MySQL和MariaDB之间做主从同步从本质上来说和MySQL之间的同步并无差别,但是在设置主从同步的过程中还是遇到了一些问题。

首先介绍基本情况:

主库MySQL5.7,OS:Windows 7 IP :10.77.40.1

从库MariaDB10.2,OS:CentOS 6.5 IP:10.77.40.2

======================================================================

流程:

1.配置主库

1.1启动binlog,确定server_id

MySQL5.7的高级信息配置还在my.ini(C:\ProgramData\MySQL\MySQL Server 5.7)中,而且在MySQL Installer中集成了高级配置选项,所以每次要修改配置都得重新运行一次MySQL Installer,比修改my.ini稳妥,有关binlog的配置也在这个里面,简单,给binlog起个名字就行了。

master的server_id一般设置为1

1.2创建slave用户

slave用户需要有权限读取master的binlog,所以创建一个新用户‘backup’,配置密码为1234,方便起见,直接赋予该用户所有权限

exp:CREATE USER 'user'@'host'IDENTIFIED BY 'pwd';
            CREATE USER 'backup'@'10.77.40.2' IDENTIFIED BY '1234';

exp:GRANT all privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
           GRANT all privileges ON *.* TO 'backup'@'10.77.40.2' WITH GRANT OPTION;

刷新:FLUSH PRIVILEGES;

2.配置从库

2.1配置my.cnf

MariaDB的配置文件和MySQL基本一致,没有什么需要修改的,把server_id设置成一个大于等于2的数就行了,较老版本的MySQL使用my.cnf配置需要同步的master信息,但目前这种方式已经被废弃了。

2.2配置master基本信息

目前使用CHANGE MASTER TO ...的方式配置master信息

exp: change master to master_host='10.77.40.1', master_user='backup', master_password='1234';

ref.:  CHANGE MASTER TO 用法

2.3配置master binlog信息

在主库中:SHOW MASTER STATUS  \G

可以看到binlog的信息:

exp:

 从中我们可以看到目前数据库中只有一个binlog文件,当前的event偏移位置是785。

change master to master_log_file='mysql-bin.000001',master_log_pos=785;

一般这么做出现问题的概率较大,建议先做sqldump,然后 RESET MASTER; 重置bionlog

查看从库端信息

这时候在从库端使用命令:SHOW SLAVE STATUS \G

exp:


出现:Slave_IO_State: Waiting for master to send event   基本就没问题了

基本流程结束

========================================================================

坑1:

 Last_IO_Errno: 1236
 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from position > file size'

从MySQL5.6开始引入了binlog_checksum全局变量,即MySQL会将event的CRC32校验值也写入binlog,显然MariaDB在分析日志的时候不会考虑该信息,导致解析出错。

解决方法:关闭主库的CRC校验,修改全局变量

在主库中 1 show variables like '%binlog%'; 2 set global binlog_checksum=NONE;

坑2:

我之前使用的MySQL5.5与MariaDB10.2版本相差过大,导致设置同步的过程中一直出现“Relay log write failure: could not queue event from master”的问题,所以升级了MySQL,这个问题得到解决。

解决这些问题就能实现MySQL到MariaDB的主从同步了,但是需要注意的是,主从同步的数据库只能使用同种引擎,一般就是无脑InnoDB,本来想使用MariaDB的columnStore列存储引擎,但由于主库使用的InnoDB,结果数据并没有同步。而两者都是InnoDB则实现了同步。


www.htsjk.Com true http://www.htsjk.com/mariadb/32048.html NewsArticle MySQL5.7到MariaDB10.2的主从同步, MariaDB和MySQL本是同根生,所以用MySQL和MariaDB之间做主从同步从本质上来说和MySQL之间的同步并无差别,但是在设置主从同步的过程中还是遇到了一些问题。...
相关文章
    暂无相关文章
评论暂时关闭