万能的互联网上相关描述总是很“详细”,满满的都是code,我这一次还算顺利,没有太多内容。
说起来惭愧,因为我个把月前被病毒勒索过,磁盘上所有文件都被加密,让我确定了必须同时使用多种方式保护数据的想法。
保护mariadb的数据,除了定时备份外,还有个必不可少的办法就是在异地机房配个从库,既备份了数据库,还可以分担读压力。
1、两台安装好mariadb10.2的centos7,其中
主数据库10.45.98.135,有数据
从数据库10.45.3.179,无数据
先把主服务器中的库导出,并导入进从数据库
2、修改配置
主数据库配置:
[mysqld]
#其他不相关配置
log-bin=mysql-bin
binlog_format=mixed
server-id = 1
binlog-do-db=要同步的数据库
binlog-ignore-db=mysql
从数据库配置:
[mysqld]
#其他不相关配置
binlog_format=mixed
server-id = 2
read-only=on
relay-log=relay-bin
replicate-do-db=要同步的数据库
replicate-ignore-db=mysql
配置完后两个mariadb都重启一下,systemctl restart mysql
查看主数据库状态:show master status;记住file和position,下一步要用。
(替换到MASTER_LOG_FILE和MASTER_LOG_POS处,我的是mysql-bin.000003和342)
3、在从数据库上把主数据库的信息替换到以下sql中执行。
CHANGE MASTER TO
MASTER_HOST='10.45.98.135',
MASTER_USER='root',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=342;
START SLAVE;
SHOW SLAVE STATUS;
从show slave status的结果中看到,如果 Slave_SQL_Running 的值为Yes,Seconds_Bebind_Master的值为0,表示正常,此时可以在主库上做写操作,默认Connect_Retry=60秒内可以在从库上看到变化。
以上,我两台mariadb都分别是在docker中,centos镜像是docker.io默认的CentOS Linux release 7.4.1708 (Core),mariadb是MySQL Server: 10.2.12-MariaDB-log。