主数据库:10.8.0.1
从数据库:122.112.246.108
三、主从配置步骤
1、确保主数据库与从数据库里的数据一样例如:主数据库里的a的数据库里有b,c,d表,那从数据库里的就应该有一个模子刻出来的a的数据库和b,c,d表
2、在主数据库里创建一个同步账号
1)每个从数据库会使用一个MySQL账号来连接主数据库,所以我们要在主数据库里创建一个账号,并且该账号要授予REPLICATION SLAVE 权限,你可以为每个从数据库分别创建账号,当然也可以用同一个!)
2)你可以用原来的账号不一定要新创账号,但你应该注意,这个账号和密码会被明文存放在master.info文件中,因此建议单独创一个只拥有相关权限的账号,以减少对其它账号的危害!)
3)创建新账号使用“CREATE USER”,给账号授权使用“GRANT”命令,如果你仅仅为了主从复制创建账号,只需要授予REPLICATION SLAVE权限。
4)下面来创建一个账号,账号名:repl,密码:repl123,只允许192.168.1.的IP段登录,如下:
mysql> CREATE USER ‘repl’@‘192.168.1.%’ IDENTIFIED BY ‘Repl123#’;
mysql> GRANT REPLICATION SLAVE ON . TO ‘repl’@‘192.168.1.%’;
5)如果开发防火墙,可能要配置下端口,如下:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
主数据库配置:
关闭mysql:
systemctl stop mysqld.service
在/etc/my.cnf中:
# 日志路径及文件名
log-bin=mysql-bin
# master端ID号
server-id=1
#同步mstest,此处关闭的话,就是除不允许的,其它的库均同步。
# binlog-do-db=mstest
# 不同步mysql库
binlog-ignore-db = mysql
打开mysql:
systemctl start mysqld.service
查看主服务器状态:(注意:记录好File和Position,配置从服务器要用)
show master status;
从数据库配置:
关闭mysql:
systemctl stop mysqld.service
在/etc/my.cnf中:
server-id=2 值唯一
relay-log=relay-bin 记录主从同步数据多日志文件
read-only = on 从库设置只读权限
replicate-do-db = test 制定要同步多数据库
配置连接主服务器的信息(注意符号):
mysql> stop slave;
mysql> change master to
-> master_host='10.8.0.1',
->master_user='repl',
->master_password='Repl123#',
->master_log_file='master-bin.000001',
->master_log_pos=155;
mysql> start slave;
查看从服务器状态:
mysql> show slave status \G;
查看上面的Slave_IO_Running: Yes 和Slave_SQL_Running: Yes 2个都为yes则证明主从同步正常,如果有任一个显示NO,则证明同步有问题。可以查看数据库日志文件,里面基本上会显示出错误之处,根据错误一步一步排查,基本上都可以解决的。
接下来就可以在主数据库上删减修改,然后看看从服务器的数据。由于我这是用公司内部的硬件服务器,两边无法ping通,所以无法实现分布式,感觉特坑。公司内部的硬件服务器居然没有公网IP,竟无语嘤噎!!!!!!