MySQL 主从复制
0、前提:windows 主机和 Linux 从机可以互相 ping 通
1、Windows主机修改 my.ini 配置文件([mysqld]节点下)
配置主机 id(必选)
server-id=1
启用二进制日志(必选)
log-bin=D:/java_dev/mysql-5.7.10-winx64/log-bin/mysqlbin
启动错误日志(非必选)
log-err=D:/java_dev/mysql-5.7.10-winx64/log-bin/mysqlerr
根目录(非必选)
basedir="D:/java_dev/mysql-5.7.10-winx64/"
临时目录(非必选)
tmpdir="D:/java_dev/mysql-5.7.10-winx64/"
数据目录(非必选)
datadir="D:/java_dev/mysql-5.7.10-winx64/Data/"
主机,读写都可以(非必选)
read-only=0
设置不要复制的数据库(非必选)
binlog-ignore-db=mysql
设置需要复制的数据(非必选)
binlog-do-db=需要复制的主数据库名字
2、Linux从机修改 my.cnf 配置文件
从服务器唯一ID(必选)(注释掉server-id=1,取消server-id=2的注释)
server-id=2
启用二进制文件(默认开着呢)
log-bin=mysql-bin
3、主机、从机都重启 mysql 服务
Windows
net stop mysql
net start mysql
Linux
service mysqld restart
4、主机从机都关闭防火墙
Windows 手动关闭防火墙
控制面板-系统和安全-防火墙-启用和关闭
虚拟机 linux 防火墙关闭
service iptables stop
5、在 Windows 主机上简历账户并授权 slave
创建用户, 并授权
GRANT REPLICATION SLAVE ON *.* TO '备份账号'@'从机器数据库 IP' IDENTIFIED BY '账号密码';
GRANT REPLICATION SLAVE ON *.* TO 'zhangsan'@'192.168.187.130' IDENTIFIED BY '1234';
刷新权限信息
flush privileges;
6、查询 master 的状态,将 File 和 Position 记录下来,在启动 Slave 时需要用到这两个参数
show master status;
7、在 Linux 从机上配置需要复制的主机
从机进行认证
CHANGE MASTER TO
MASTER_HOST='主机 IP',
MASTER_USER='创建用户名',
MASTER_PASSWORD='创建的密码',
MASTER_LOG_FILE='File 名字',
MASTER_LOG_POS=Position数字;
CHANGE MASTER TO
MASTER_HOST='192.168.1.91',
MASTER_USER='zhangsan',
MASTER_PASSWORD='1234',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=100;
8、启动从服务器复制功能
start slave;
9、查看从机复制功能是否启动成功:Slave_SQL_Running:Yes 和 Slave_IO_Running:Yes 说明从机连接主机成功
show slave status\G;
10、停止从服务复制功能
stop slave;