MariaDB配置双主复制方案
本文环境
Debian8
MariaDB10.1.21
配置文件1
修改服务器1上mysql配置文件/etc/mysql/my.cnf
有些配置默认就存在的,如果你有洁癖,请先搜索,再添加配置项。
[mysqld] server-id=1 log_bin=/var/log/mysql/mariadb-bin log_bin_index=/var/log/mysql/mariadb-bin.index binlog-do-db=tudou1#需要同步的数据库,这里同步tudou1和tudou2两个数据库 binlog-do-db=tudou2 binlog-ignore-db=mysql#忽略同步的数据库 log_slave_updates#把从库的写操作记录到binlog中(缺少之后,双主创建失败) expire_logs_days=365#日志文件过期天数,默认是0,表示不过期 auto_increment_increment=2#设定为主服务器的数量,防止auto_increment字段重复 auto_increment_offset=1#自增长字段的初始值,在多台master环境下,不会出现自增长ID重复
配置文件2
[mysqld] [mysqld] server-id=2 log_bin=/var/log/mysql/mariadb-bin log_bin_index=/var/log/mysql/mariadb-bin.index binlog-do-db=tudou1#需要同步的数据库,这里同步tudou1和tudou2两个数据库 binlog-do-db=tudou2 binlog-ignore-db=mysql#忽略同步的数据库 log_slave_updates#把从库的写操作记录到binlog中(缺少之后,双主创建失败) expire_logs_days=365#日志文件过期天数,默认是0,表示不过期 auto_increment_increment=2#设定为主服务器的数量,防止auto_increment字段重复 auto_increment_offset=2#自增长字段的初始值,在多台master环境下,不会出现自增长ID重复
注意:
logslaveupdates表示把从库的写操作记录到binlog中,缺少之后,双主创建失败。双主同步时该项必须有
binlog-do-db需要同步的数据库,可写多个
binlog-ignore-db表示忽略同步的数据库
创建同步账户
//服务器1 GRANTREPLICATIONSLAVEON*.*TO'repuser'@'server-2'IDENTIFIEDBY'repuser'; FLUSHPRIVILEGES; //服务器2 GRANTREPLICATIONSLAVEON*.*TO'repuser'@'server-1'IDENTIFIEDBY'repuser'; FLUSHPRIVILEGES;
可以顺便在另一台服务器测试能不能登录,如果不能,把bind-address那行注释掉即可。
$mysql-urepuser-prepuser-hserver-1
查看master状态
服务器1中
MariaDB[mysql]>showmasterstatus; +--------------------+----------+--------------+------------------+ |File|Position|Binlog_Do_DB|Binlog_Ignore_DB| +--------------------+----------+--------------+------------------+ |mariadb-bin.000514|639|xxxxxxxx|mysql| +--------------------+----------+--------------+------------------+ 1rowinset(0.00sec)
服务器2中
MariaDB[mysql]>showmasterstatus; +--------------------+----------+--------------+------------------+ |File|Position|Binlog_Do_DB|Binlog_Ignore_DB| +--------------------+----------+--------------+------------------+ |mariadb-bin.000006|1057|xxxxxxxx|mysql| +--------------------+----------+--------------+------------------+ 1rowinset(0.00sec)
设置同步
//服务器2 MariaDB[mysql]>CHANGEMASTERTOMASTER_HOST='server-1',MASTER_PORT=3306,MASTER_USER='repuser',MASTER_PASSWORD='repuser',MASTER_LOG_FILE='mariadb-bin.000514',MASTER_LOG_POS=639; MariaDB[mysql]>STARTSLAVE; //服务器1 MariaDB[mysql]>CHANGEMASTERTOMASTER_HOST='server-2',MASTER_PORT=3306,MASTER_USER='repuser',MASTER_PASSWORD='repuser',MASTER_LOG_FILE='mariadb-bin.000006',MASTER_LOG_POS=1057; MariaDB[mysql]>STARTSLAVE; //完毕之后,分别执行 MariaDB[mysql]>SHOWSLAVESTATUS\G
如出现以下两项,则说明配置成功!
Slave_IO_Running:Yes Slave_SQL_Running:Yes
双主同步测试
在服务器1数据库中创建一个表,看看服务器2会不会出现,按照上面教程,如果没问题的话,就是可以同步的。