1.登录主服务器的群晖 DSM,打开 File Station,找到 MariaDB 配置文件:
[/volume1/@appstore/MariaDB10/usr/local/mariadb10/etc/mysql/my.cnf]
2.添加或修改以下配置:
[mysqld]
server-id = 1 # 主服务器唯一 ID(必须为整数)
log-bin = mysql-bin # 启用二进制日志
binlog-format = ROW # 使用行级复制(推荐)
binlog-do-db = your_db # 指定需同步的数据库(不指定则同步所有库)
3.保存文件,重启 MariaDB 服务,手动去套件暂停启动即可
4.主服务器SQL创建复制用户:
CREATE USER 'replica'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
FLUSH PRIVILEGES;
5.主服务器SQL锁定数据库并获取当前二进制日志位置:
FLUSH TABLES WITH READ LOCK; //最好不好输入这个
SHOW MASTER STATUS; //只输入这个即可
得到信息并记录
| File | Position | Binlog_Do_DB |
|---|---|---|
| mysql-bin.000528 | 124921 | cms2024 |
6.在从服务器(Slave)上配置,my.cnf群晖和主服务器位置一致,debin系统一般在/etc/mysql/my.cnf:
[mysqld]
server-id=2
relay-log=mysql-relay-bin
read_only = 1 //副库只读
super_read_only=1 //超级只读同时就算是root也不可以
7.从服务器停止所有错误服务
STOP SLAVE;
RESET SLAVE ALL;
8.启动同步:
STOP SLAVE;
CHANGE MASTER TO
MASTER_HOST='192.168.XX.XX',
MASTER_PORT=3306,
MASTER_USER='repl',
MASTER_PASSWORD='主库密码',
MASTER_LOG_FILE='mysql-bin.000528',
MASTER_LOG_POS=124921,
MASTER_CONNECT_RETRY=10,
MASTER_SSL=0;
START SLAVE;
9 .检查状态:
XSHELL命令:
/usr/local/mariadb10/bin/mysql -u root -p
SHOW SLAVE STATUS\G;
SQL命令:
SHOW SLAVE STATUS;
看到一下信息代表正常
Slave_IO_Running Yes
Slave_SQL_Running Yes
10.为防止误操作,可以将从服务器设置为只读:
只读
SET GLOBAL read_only=1;
其他注意事项:
恢复读写
SET GLOBAL read_only=0;
如果之前还启用了超级只读模式(即 super_read_only),也需要将其关闭:
SET GLOBAL super_read_only=0;
如果从服务器错误
-- 在主服务SQL器执行
SHOW MASTER STATUS;
--在从服务器
STOP SLAVE;
CHANGE MASTER TO
MASTER_HOST='192.168.XX.XX',
MASTER_PORT=3306,
MASTER_USER='repl',
MASTER_PASSWORD='主库密码',
MASTER_LOG_FILE='mysql-bin.000528',
MASTER_LOG_POS=124921,
MASTER_CONNECT_RETRY=10,
MASTER_SSL=0;
START SLAVE;
注意恢复连接后如果你动过从服务器数据从服务器会保留错误数据
群晖主副MariaDB/SQL数据备份
666
刚好😀😀😀😀