mysql双主热备
mysql复制原理
原理
复制功能是将主库的DDL和DML操作通过二进制日志传递到复制服务器(从库)上,然后从库对这些日志重新执行(重做),从而使得主库和从库保持数据一致。
mysql数据信息准备条件
数据库基本信息
数据库版本 | ip地址 | 服务器类型 |
---|---|---|
5.1.73 | 192.168.1.159 | centos6.10 |
5.1.73 | 192.168.1.67 | centos6.10 |
数据库主从复制配置
数据库配置文件
#159数据库配置
cat /etc/my.cnf
[mysql]
default-character-set=utf8#添加项
[mysqld]
character_set_server=utf8#添加项
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
server-id=1
log-bin=log_name
binlog-do-db=test002
binlog-ignore-db=mysql
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
#67数据库配置只是server-id不同
server-id=2
参数 | 说明 |
---|---|
server-id | 服务id,每个数据库都不一样 |
log-bin | 日志文件的名称,这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称。 |
binlog-do-db | 需要热备的数据库。 |
binlog-ignore-db | 不需要热备的数据库,这就避免了Master上的权限设置等被同步到Slave上, |
********数据库配置修改后重启动数据库,加载配置*********
数据库登录后配置
159主库配置
#给从数据库配置权限
GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO 'root'@'192.168.1.67' IDENTIFIED BY '123456';
#查询主数据库状态
show master status;
File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
---|---|---|---|
log_name.000003 | 958 | test002 | mysql |
67 从库配置
在从数据库配置主数据库信息,文件名称和log位置要和主库中查出的数据对应(最后两行)
CHANGE MASTER TO
MASTER_HOST='192.168.1.159',
MASTER_USER='root',
MASTER_PASSWORD='123456',
MASTER_CONNECT_RETRY=60,
MASTER_LOG_FILE='log_name.000003',
MASTER_LOG_POS=958;
参数 | 说明 |
---|---|
MASTER_HOST | 同步数据库的IP,从该主机上同步数据到本机。 |
MASTER_USER | 同步数据的用户 |
MASTER_PASSWORD | 同步数据的密码 |
MASTER_CONNECT_RETRY | 断开之后,再次尝试连接的时间间隔 |
MASTER_LOG_FILE | 主服务器二进制日志的文件名(前面要求记住的参数) |
MASTER_LOG_POS | 日志文件的开始位置(前面要求记住的参数) |
#开启从服务器
slave start;
双主配置
****双主配置是配置两个数据库互为主从****
67 主库配置
#给从数据库配置权限
GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO 'root'@'192.168.1.159' IDENTIFIED BY '123456';
#查询主数据库状态
show master status;
159 从库配置
在从数据库配置主数据库信息,文件名称和log位置要和主库中查出的数据对应(最后两行)
CHANGE MASTER TO
MASTER_HOST='192.168.1.67',
MASTER_USER='root',
MASTER_PASSWORD='123456',
MASTER_CONNECT_RETRY=60,
MASTER_LOG_FILE='log_name.000003',
MASTER_LOG_POS=1036;
参数 | 说明 |
---|---|
MASTER_HOST | 同步数据库的IP,从该主机上同步数据到本机。 |
MASTER_USER | 同步数据的用户 |
MASTER_PASSWORD | 同步数据的密码 |
MASTER_CONNECT_RETRY | 断开之后,再次尝试连接的时间间隔 |
MASTER_LOG_FILE | 主服务器二进制日志的文件名(前面要求记住的参数) |
MASTER_LOG_POS | 日志文件的开始位置(前面要求记住的参数) |
#开启从服务器
slave start;
两个数据库插入数据能够保证两个数据的一致
效果略
防火墙配置
开启防火墙后两台机器不能完成数据的同步,明明两台机器的数据端口都打开了,发现数据库同步使用的是一个随机端口,目前使用的是配置指定ip的端口都可访问的方式
查看mysql使用的端口
查看发现mysql正在使用随机端口通信,指定端口的方式配置防火墙 不能生效。
netstat -anptu | grep mysql
配置开发ip的防火墙
cat /etc/sysconfig/iptables
-A INPUT -p tcp -s 192.168.1.67 --dport 1024:65535 -j ACCEPT