MySQL主从配置
1.知识简介
MySQL主从配置又叫做replication,AB复制.即在A,B两台机器做主从后,在A上写数据,在另一台B上也会跟着写数据,两者间数据实现实时同步.
MySQL主从是基于binlog的,主数据库需开启binlog才能进行主从配置.
2.操作步骤
1).将主更改操作记录到binlog里
2).从将主的binlog事件(sql 语句)同步到本机上并记录在relaylog里中继日志
3).从根据relaylog里的sql语句按照顺序进行执行.
3.MySQL主从原理
主服务器上有一个log dump线程,用来和从的I/O线程传递binlog;
从服务器上有两个线程,其中I/O线程用来同步主服务器的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句实现
使用场景:
1.用于单纯的做数据备份.
2.数据备份(在主数据上写入,在主数据和从数据都可以进行读数据)
4.MySQL主从配置
1.配置主服务器
修改配置文件
[root@localhost ~]# vi /etc/my.cnf
...
log_bin=wslinux1
...
basedir = /usr/local/mysql
datadir = /data/mysql
port = 3306
server_id = 10
socket = /tmp/mysql.sock
...
重启mysql服务
[root@localhost ~]# /etc/init.d/mysqld restart
重启后会在/data/mysql中生成新的文件可以查看
[root@localhost mysql]# ls /data/mysql/
备份mysql库
[root@localhost mysql]# mysqldump -uroot mysql > /tmp/mysql.sql
创建一个库保存数据
[root@localhost mysql]# mysql -uroot -e "create database suor"
将mysql库恢复成新建的库(用于测试)
[root@localhost ~]# mysql -uroot suor < /tmp/mysql.sql
数据库配置,进入数据库
[root@localhost ~]# mysql -uroot
创建用于同步数据的用户并授权
mysql> grant replication slave on *.* to 'repl'@192.168.200.11 identified by 'password';
锁住表,保持表内数据不变
mysql> flush tables with read lock;
此操作目的在于为了让两者保持一致;
显示主机状态
mysql> show master status;
表示:文件名和大小
2.配置从服务
修改配置文件(从服务不需要配置bin_log)
重启mysqld服务
在主服务器上的mysql.sql拷贝到从服务器上
进入数据库
[root@localhost mysql]# mysql -uroot
创建一个同名库
mysql> create database suor;
导入数据库内容
[root@localhost mysql]# mysql -uroot suor < /tmp/mysql.sql
确认是否导入成功
注:需要保持初始数据一致,否则可能会出现数据紊乱
实现主从(进入从数据库)
停掉数据库
mysql> stop slave;
mysql>change master to master_host='192.168.200.10',master_user='wshuo',master_password='123456',master_log_file='wslinux1.000001',master_log_pos= 645239 ;
启动数据库
mysql> start slave;
查看是否成功链接
mysql> show slave status\G;
注:需要关闭防火墙
在主服务器上执行(解除锁定)
mysql> unlock tables;
3.测试主从
在主服务器上查看表内的db有几个
在从服务器上查看db有几个
在主节点删除db在查看
在从节点查看会发现也已经被删除
表示同步成功
注:不要在从服务器上操作,否则会导致主从失效;
当误操作时可以在主上也删除掉或者重新配置主从