欢迎访问我的博客,你的支持,是我最大的动力!

利用MariaDB实现主从同步从库(Slave)触发器(trigger)的自动触发

Mysql-笔记 小马奔腾 5041℃ 评论
目录:
[显示]

在binlog_format格式为row或者mixed的情况下,mysql主从同步结构下,从库上的触发器对于来自于主从复制的记录变更不会再次触发触发器。但是,在mariadb中,却可以实现这个功能的,mariadb拥有一个全局参数slave_run_triggers_for_rbr,当设置为1时,即开启从库对triggers的触发。

案例:
业务数据库使用MySQL双主架构,MySQL版本:5.7.15-log,根据业务需要,现需对数据库中部分表添加触发器,将数据变更实时同步到redis中(通过UDF实现),因为UDF需额外编译扩展,不适合放到双主服务器上,所以对其中一台主做一台从,通过主从复制,在第三台数据库服务器上实现数据变更到redis的同步。但是,经过实际测试,发现MySQL主从同步的数据不能够触发触发器(binlog_format格式为statement时,从库可以触发),因为线上使用的是mixed格式,所以不能实现。现使用MariaDB,版本10.3.9(mariadb-10.3.9-linux-systemd-x86_64),开启slave_run_triggers_for_rbr,实现触发。

测试版本

Master:MySQL 5.7.15-log

Slave:MariaDB 10.3.9 (mariadb-10.3.9-linux-systemd-x86_64)

参数差异

在实际操作过程中,发现,部分配置参数仅MySQL支持,MariaDB不支持,部分配置参数仅MariaDB支持,MySQL不支持,这里整理如下:

MariaDB不支持的配置
log_timestamps=SYSTEM
master_info_repository = TABLE
relay_log_info_repository = TABLE
gtid_mode = off
enforce_gtid_consistency = 0
internal_tmp_disk_storage_engine = InnoDB
MySQL不支持的配置
slave_run_triggers_for_rbr = 1

MariaDB替换MySQL

 

MariaDB的初始化
./mysql_install_db --no-defaults --basedir=/opt/mariadb-10.3.9-linux-systemd-x86_64 --datadir=/data/mysql

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following commands:

'/opt/mariadb-10.3.9-linux-systemd-x86_64/bin/mysqladmin' -u root password 'new-password'
'/opt/mariadb-10.3.9-linux-systemd-x86_64/bin/mysqladmin' -u root -h 192.168.1.10 password 'new-password'

Alternatively you can run:
'/opt/mariadb-10.3.9-linux-systemd-x86_64/bin/mysql_secure_installation'

which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.

See the MariaDB Knowledgebase at http://mariadb.com/kb or the
MySQL manual for more instructions.

You can start the MariaDB daemon with:
cd '/opt/mariadb-10.3.9-linux-systemd-x86_64' ; /opt/mariadb-10.3.9-linux-systemd-x86_64/bin/mysqld_safe --datadir='/data/mysql'

You can test the MariaDB daemon with mysql-test-run.pl
cd '/opt/mariadb-10.3.9-linux-systemd-x86_64/mysql-test' ; perl mysql-test-run.pl

 

升级步骤

1、通过xtrabackup工具备份MySQL数据
xtrabackup --defaults-file=/etc/my.cnf --no-timestamp --user=root --password=**** --host=192.168.1.11 --target-dir=/data/backup --backup
2、准备数据
xtrabackup --target-dir=/data/backup --prepare
3、将数据复制到/data/mysql目录
4、启动MariaDB
/opt/mysql_server/mysql2/bin/mysqld_safe --defaults-file=/etc/my.cnf &
5、升级,修复部分表差异
./mysql_upgrade -uroot -p*** -h 192.168.1.10 -P 3306
配置文件

低功耗版本/etc/my.cnf

 

转载请注明:轻风博客 » 利用MariaDB实现主从同步从库(Slave)触发器(trigger)的自动触发

喜欢 (0)or分享 (0)