最近配置了下mysql得主从同步,公布出来帮助新人
正题开始
有A,B两台服务器A主B副
A (10.10.10.10) B(10.10.10.11)
先进入A数据库 mysql -u root -p
执行
GRANT REPLICATION SLAVE ON *.* TO ‘账户’@’10.10.10.11‘ IDENTIFIED BY '密码';
FLUSH PRIVILEGES;
然后打开A库的my.conf
server-id = 1#主机
log_bin = /var/log/mysql/mysql-bin.log #该文件可以查看备份信息
read-only = 0 #主机,读写都可以
binlog-do-db = test #需要备份数据,多个写多行
binlog-ignore-db = mysql #不需要备份的数据库,多个写多行
打开B库的my.conf
server-id = 2
log_bin = /var/log/mysql/mysql-bin.log
master-host = 10.10.10.10
master-user = 账号
master-pass = 密码
master-port = 3306
master-connect-retry=60 #如果从服务器发现主服务器断掉,重新连接的时间差(秒)
replicate-do-db =test #只复制某个库
replicate-ignore-db=mysql #不复制某个库
然后依次同步A库 B库,在A库执行CURD操作看看B库有木有更新,如果木有,查找错误
在B库执行show slave status\G;
如果出现
Last_IO_Error: error connecting to master '账号'@IP:3306' - retry-time: 60 retries: 86400
错误,则是连接A数据库不成功,有几个可能,A服务器开通B服务器访问权限不成功
或者B是内网机器,没有访问外网IP的能力,(如阿里云的内网服务器没有公网IP),这个时候只需要把master-host的IP改为A服务器的内网IP即可,如果发现改完没有效果,进入B的mysql,执行
stop slave;//停止从数据库执行
change master
to
master_host=
'A的IP'
,master_port=3306,master_user=
'账号'
,master_password=
'密码'
;
start slave;
show slave status\G; 执行看看是否能连通,基本OK了。试着在A库CRUD吧