简介
MySQL 要做到主从复制,其实依靠的是二进制日志,即:假设主服务器叫A,从服务器叫B;主从复制就是
B跟着A学,A做什么,B就做什么。那么B怎么同步A的动作呢?现在A有一个日志功能,把自己所做的增删改查的动作全都记录在日志中,B只需要拿到这份日志,照着日志上面的动作施加到自己身上就可以了。这样就实现了主从复制。
主从复制常见命令
编号 | 命令 | 说明 |
---|---|---|
01 | service mysqld restart | 重新启动MySQL服务 |
02 | show master status | 查看主库信息 |
03 | show slave status \G | 查看从库配置信息(\G表示竖向显示,默认横向显示) |
04 | /etc/init.d/mysql stop | 停止MySQL 服务 |
05 | /etc/init.d/mysql start | 启动MySQL 服务 |
06 | grant replication slave on . To ‘accountName’@‘从IP’ identified by ‘loginPwd’ | 创建用户并赋予从数据的权限 |
07 | flush privileges | 刷新数据配置生效 |
08 | chane master to master_host=‘主库IP’,master_port=3306,master_user=‘accountName’,master_password=‘loginPwd’,master_log_file=‘主库二进制文件名称’,master_log_pos=0 | 配置从库信息 |
09 | start slave | 开启主从跟踪(从库执行) |
10 | stop slave | 关闭主从跟踪 |
11 | GRANT select,insert,update,delete on . TO ‘loginAccount’@’%’ IDENTIFIED BY ‘loginPwd’ with grant option | 创建账户并赋予权限;%表示账号可以远程访问 |
主从数据库配置
1. 主数据配置步骤
- 设置server ID
- 打开 二进制文件
- 打开二进制文件索引
windowns MySQL安装目录下mysql.ini 中配置;Linux 在etc/my.cnf 中配置;
# 标识Server-id ID 1 - 36 建议 10 以上
server-id=11
# 打开二进制文件
log-bin=master-bin
#log-bin=mysql-bin
#打开二进制文件索引文件
log-bin-index=master-bin.index
修改了配置需要重新启动数据库服务(service mysqld restart)
主数据创建一个账号用于从数据登录
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'从数据IP地址' IDENTIFIED BY 'mysql';
flush privileges;
意思是从数据以repl 账号 mysql 作为密码连接,主数据就赋予REPLICATION SLAVE 这个权限;这个权限是正对主上面的所有数据所有表的操作
GRANT REPLICATION SLAVE ON 那个数据.那张表 ‘账号’@‘从IP地址’ IDENTIFIED BY ‘密码’
所有数据,或者所有表就用*代替
flush privileges; 及时刷新主库,让修改生效
2. 从数据库配置
还是修改my.cnf 或者mysql.ini文件
# 设置server-id
server-id=12
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
重启mysql 服务
/etc/init.d/mysql stop
/etc/init.d/mysql start
3. 让从数据知道主数据地址
让从数据知道主数据地址
change master to master_host='主数据IP地址',master_port=3306,master_user='repl',master_password='mysql',master_log_file='二进制文件',master_log_pos=0;
start slave;
代码说明
master_log_file 是通过show master status 显示值 File 值
master_log_pos 是通过 show msater status 显示的 Position 值
主库二进制文件查看
show master status;
file 值就是二进制文件
master_log_pos 从第一个开始复制;
start slave; 开启主从跟踪
stop slave;停止主从复制;
show slave status \G; \G 竖向显示
特别注意
- 主库只负责写数据
- 从库只负责读数据
- 从库版本一定要比主库高