Linux下Mysql主从同步搭建
提前安装好mysql
主服务器:centos7.0 IP:10.20.0.171
从服务器:centos7.0 IP:10.20.0.195
一、主服务器相关配置
创建同步账户并指定服务器地址
mysql -uroot -p
use mysql
grant replication slave on *.* to 'sgrepl'@'10.20.0.195' identified by 'sgrepl';
flush privileges #刷新权限
my.cnf配置,一定要开启log_bin
[mysqld]
server-id=100
log_bin=mysql-bin
datadir=/usr/local/mysql/data
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=600
innodb_file_per_table=1
lower_case_table_names=1
character_set_server=utf8
replicate-do-db=ourneeddb #要同步的数据库
replicate-ignore-db=mysql #不需要同步的数据库
重启mysql
service mysql restart
查看主服务器master状态
导出数据库ourneeddb 之前先锁定数据库
flush tables with read lock; #数据库只读锁定命令,防止导出数据库的时候有数据写入
unlock tables; #解除锁定
导出数据库结构及数据:mysqldump -uroot -p ourneeddb > /home/ourneeddb.sql
二、从库的配置
修改/etc/my.cnf配置文件vi /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=600
innodb_file_per_table=1
lower_case_table_names=1
character_set_server=utf8
server-id = 200
log_bin = mysql-bin
replicate-do-db = ourneeddb
replicate-ignore-db = mysql
导入数据库ourneeddb
配置主从同步
stop slave;
change master to master_host='10.20.0.171',
master_user='sgrepl',
master_password='sgrepl',
master_log_file='mysql-bin.000008',#从主节点看到的
master_log_pos=760;#从主节点看到的
start slave;
show slave status\G;
看下效果
三、容易出的问题
启动slave时报错Slave failed to initialize relay log info structure from the repository
reset slave;
start slave;
Slave_IO_Running为no的话
看日志
有可能是
里面的server-id主从相同