首先在两台不同IP的服务器安装相同版本的mysql(也可以docker 用 network模式).例如
主数据库(master) 178.18.0.2
my.cnf的设置(一般在/etc/mysql/my.cnf 具体路径自己找下)
#要看准这些,不是是[mysql]这里的
[mysqld]
#id标识
server-id=1
#(开启binlog)
log-bin=/var/lib/mysql/mysql-bin
#这里设置不要备份的部分
binlog-ignore-db=mysql
binlog-ignore-db=sys
连接主数据库,创建一个从服务器可以连接的用户 就是cmd界面出现 mysql>这样的时候;
GRANT ALL PRIVILEGES ON *.* TO 'slave'@'%' IDENTIFIED BY 'abc123456!' WITH GRANT OPTION;
#为了安全,这个%也可以换从服务器IP,例如从服务器IP是178.18.0.3 这样的。
然后刷新数据库
FLUSH PRIVILEGES;
重启数据库,查看主数据库状态
show master status;
类似这样的东西,记录file 和 position 以备从服务器使用.这个数据,每重启一次数据库,有可能会改变,所以重启服务器后,从服务器要做相应改变
从数据库存 (slave) 178.18.0.3
首先,在从服务器测试是否可以连接得上主服务器
cmd后运行,mysql -h 178.18.0.2 -uslave -pabc123456! 如果可以连接的上,证明可以互通!
my.cnf的设置(一般在/etc/mysql/my.cnf 具体路径自己找下)
[mysqld]
server-id=2
连接从数据库后,运行下面命令,部分数据按实际
CHANGE MASTER TO
MASTER_HOST='178.18.0.2',
MASTER_USER='slave',
MASTER_PASSWORD='abc123456!',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=2216;
然后运行
start slave;
接着运行
show slave status \G;
查看从服务器运行状态
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果这两个都是Yes的话,证明主从两台服务器已经正常连接上了