最近有个项目打算做mycat的数据库集群,系统使用centos7 数据库使用mariadb,jdk openjdk1.7. 规划使用两台数据库:192.168.93.130 作为master,192.168.93.131作为slave。 先设置master数据库:
1、vi /etc/my.cfg 在[MySQLd]下添加如下代码
[mysqld]server_id=130binlog-ignore-db=mysql log-bin=master-mysql-bin binlog_cache_size=1M binlog_format=mixed expire_logs_days=7 slave_skip_errors=1062参数解释:serverid #全局唯一的binlog-ignore-db=mysql #复制过滤,我们不同步mysql系统自带的数据库log-bin=master-mysql-bin #开启logbin功能并设置logbin文件的名称binlog_format=mixed #混合型复制模式,默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。接下来重启mysql服务并用客户端登录另关于对数据库修改的sql全部记录在了bin-logsystemctl restart mariadb
2、添加有主备权限的用户
grant replication slave, replication client on *.* to 'root'@'192.168.93.130' identified by 'root'; flush PRivileges;具体用户名随意 3、设置slave(192.168.93.131 )主机信息 vi
server_id=5 binlog-ignore-db=mysql log-bin=mysql-slave-bin binlog_cache_size = 1M binlog_format=mixed expire_logs_days=7 slave_skip_errors=1062 relay_log=mysql-relay-bin log_slave_updates=1 read_only=1配置文件和master的差不多,主要差别在一下几点 log-bin=mysql-slave-bin开启了二进制日志,实际上不开也没关系,因为我们这个slave只是做slave,如果你这台slave还有可能要做别人的master的话那么必须开启 relay_log=mysql-relay-bin 配置中继日志,用来存放从master的bin-log那边同步来的数据
配
重启数据库服务:sysectl restart mariadb 进入mariadb命令行模式 mysql
change master to master_host=’192.168.93.130’ master_user=’root’,master_passmWord=’root’,aste r_port=3306, master_log_file=’可以在master主机执行 show master status查看文件名’, master_log_pos=427(可以在master主机执行 show master status查看文件位置, master_conect_retry=30;
执行start slave; 执行 show slave status 查看执行情况
如果以外重启导致数据不能同步可以重新执行change master to 重新,位master_log_pos,以上为在全新数据库中开启主从模式,如果不是全新的需要备份数据库到slave数据库中,需要先执行 flush tables with read lock; 锁住master数据库,然后执行备份命令。
新闻热点
疑难解答