今天为大家分享MySQL高可用的基础-主从复制,特别简单的操作,看完你也能轻轻松松搭建起来。
介绍:
Mysql主从又叫Replication、AB复制。就是A与B两台数据库服务器做主从后,在A上写数据,另外一台B也会跟着写数据,实现数据实时同步
作用:
实时灾备,主从库用于故障切换
读写分离,从库提供查询服务
备份从库,避免影响主库业务
MySQL主从复制原理
1、主库将所有的写操作记录在binlog日志中,并生成logdump线程,将binlog日志传给从库的I/O线程
2、从库生成两个线程,一个是I/O线程,另一个是SQL线程
3、I/O线程去请求主库的binlog日志,并将binlog日志中的文件写入relay log(中继日志)中
4、SQL线程会读取relay loy中的内容,并解析成具体的操作,来实现主从的操作一致,达到最终数据一致的目的
MySQL主从复制形式
MySQL主从复制配置步骤-总体
1、确保从数据库与主数据库里的数据一致
2、在主数据库里创建一个同步账户授权给从数据库使用
3、配置主数据库(修改配置文件)
4、配置从数据库(修改配置文件)
MySQL主数据库配置步骤-主库
1、停止对主库的数据写入操作,对主库做全库备份,并上传至从库
mysqldump -uroot -p密码 --all-databases > /disk1/all-2020mysql.sql
scp /disk1/all-2020mysql.sql root@192.168.1.12:/disk1/
2、创建同步账号授权给从数据库使用
create user 'repl'@'192.168.1.12' identified by '密码';
grant replication slave on *.* to 'repl'@'192.168.1.12';
flush privileges;
3、配置主数据库编辑配置文件my.cnf
vi /etc/my.cnf
//添加以下内容
log-bin=mysql-bin #日志文件名
server-id=1 #服务ID,用于区分服务
log-slave-updates=true #从服务器更新二进制日志
sync_binlog=1 #控制数据库的binlog刷到磁盘
expire_logs_days=2 #binlog过期清理时间
4、重启主数据库
systemctl restart mysqld.service
5、查看主数据库状态
show master status\G;
MySQL主数据库配置步骤-从库
1、根据主库备份在从库进行数据恢复
mysql -uroot -p密码 < /disk1/all-2020mysql.sql
2、配置从数据库编辑配置文件my.cnf
server-id=2 #服务ID
relay-log=mysql-relay-bin #日志文件名
relay-log-index=slave-relay-bin.index #日志索引
read_only=ON #只读
3、重启从数据库
systemctl restart mysqld.service
4、配置并启动主从复制
mysql>change master to master_host='192.168.1.11',master_user='repl',
master_password='repl密码',master_log_file='mysql-bin.000001',
master_log_pos=154;
mysql>start slave;
5、查看从数据库状态
show slave status\G;
至此,MySQL主从复制就宣告成功了!赶紧动手试试吧