主库配置
修改mariadb配置文件,开启binlog日志以及指定binlog日志文件名,指定server-id,server-id不能与从库重复。指定binlog-format格式,有三种格式分别是Row,Statement,Mixed,设置允许被复制的库
vim /etc/my.cnf
[mysqld]
***
*****
log-bin=mysql-bin
server-id=103
binlog-format="mixed"
binlog-do-db=dbname1,dbname2 #允许被复制的库,如果多个以,号隔开
binlog-ignore-db=mysql,performance_schema #不允许被复制的库
log_slave_updates #主库一定要启用,记录从库更新,允许链路复制
*****
***
重启Mariadb使之生效
systemctl restart mariadb
添加同步账号
MariaDB [(none)]>grant replication slave on *.* to repl@'从库服务器ip' identified by '123456';
查看主库master的file文件名以及pos位置,记住这两个信息从库指定主库master的适合需要使用。
MariaDB [(none)]> show master status;
+------------------+-----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-----------+--------------+------------------+
| mysql-bin.000001 | 000222222 | | |
+------------------+-----------+--------------+------------------+
sql命令行执行全局锁表命令,防止新数据写入
MariaDB [(none)]>flush tables with read lock;
导出需要备份对应的库
mysqldump -uroot -p123456 --databases dbname1 dbname2 > dbname.sql
把导出数据使用scp命令传到从库服务器
scp dbname.sql root@1.1.1.1:.
从库配置
修改mariadb配置文件,开启binlog日志以及指定binlog日志文件名,指定server-id,server-id不能与主库重复。指定binlog-format格式,有三种格式分别是Row,Statement,Mixed,设置需要复制的库。
vim /etc/my.cnf
[mysqld]
***
*****
log-bin=mysql-bin
relay_log=mysql-relay-bin
server-id=104
binlog-format="mixed"
replicate-do-db=dbname1,dbname2 #只同步的库,如果多个以,号隔开
replicate-ignore-db=mysql,performance_schema #不同步的库
*****
***
重启Mariadb使之生效
systemctl restart mariadb
提前创建数据库
MariaDB [(none)]> create database dbname1;
MariaDB [(none)]> create database dbname2;
把主库导出的数据导入从库
mysql -uroot -p123456 --databases dbname1 dbname2 < dbname.sql
指定主库master信息
MariaDB [(none)]>change master to master_host='主库服务器ip', master_user='slave', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=000222222;
启动slave并查看slave状态如果IO以及SQL进程都是yes则证明主从配置正常。
MariaDB [(none)]>start slave;
MariaDB [(none)]>show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
主库解除锁表状态
MariaDB [(none)]>unlock tables;
最后可在主库创建个表添加几条数据测试从库是否同步过来。