MySQL主从数据配置
[准备工作]
- MySQL数据库版本一致,本文使用5.5
- 两个数据库地址 (也可以一个地址端口不同): 192.168.0.55 、192.168.20.129(虚拟机内的linux)
- 主库设置一个可以外部访问的用户,建议使用root以外的账号
[开始配置]
- [192.168.0.55 主库设置]
修改my.ini配置文件(Windows,如果是linux则为my.cnf)
新增[mysqld]下的配置
server-id = 1
log-bin=日志目录
sync_binlog=1
binlog_format=mixed
binlog-do-db=dbname需要同步的表名
在[mysqldump]中修改
max_allowed_packet = 20M
确保max_allowed_packet处于一个较大的值
可以通过以下命令查看max_allowed_packet有没有生效。
show VARIABLES like ‘%max_allowed_packet%’;
如果没有生效可以在mysql命令行中使用
set global max_allowed_packet = 2*1024*1024*10
在主库的命令行中输入
show master status\G
记录File 和 Position
(本文中File 为 MySQL.000115 ,Position为 1281)
重启主库,完成主库配置
- [192.168.20.129 从库设置]
同样修改配置文件中的 [mysqld]
server-id=2
log-bin = mysql-bin
relay-log-index = slave-relay-bin.index
relay-log = slave-relay-bin
sync_master_info = 1
sync_relay_log = 1
sync_relay_log_info = 1
以上三句sync_*只适用于mysql 5.5
进入mysql命令行,输入如下
其中master_log_file和master_log_pos为主库查看记录下的File和Position
change master to master_host = '192.168.0.55', master_user = 'guest', master_port=3306, master_password='guest', master_log_file = 'MySQL.000115', master_log_pos=1281;
CHANGE MASTER TO MASTER_CONNECT_RETRY=30;
reset slave;
start slave;
最后如何需要同步时间可以使用
yum -y install ntpdate
ntpdate ip or 域名
clock -w
[其他]
锁表命令:flush tables with read lock;
解除锁表:unlock tables;