外国做足球数据网站手机软件制作网站
主从复制
复制的基本原理
slave会从master读取binlog来进行数据同步
 
 MySQL复制过程分成三步:
master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;slave将master的binary log events拷贝到它的中继日志(relay log) ;slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL复制是异步的且串行化的
复制的基本原则:
- 每个
slave只有一个master - 每个
slave只能有一个唯一的服务器ID - 每个
master可以有多个salve 
复制的最大问题是延迟。
一主一从常见配置
准备工作
一、mysql版本一致且后台以服务运行
二、主从都配置在[mysqld]结点下,都是小写
服务器配置
一、主机修改my.cnf配置文件:
1.、[必须]主服务器唯一ID:
server-id=1
 
2、[必须]启用二进制日志(指定日志存放位置)
log-bin=/var/lib/mysql/mysql-bin
 
3、 [可选]启用错误日志
log-err=自己本地的路径/mysqlerr
 
4、[可选]根目录
basedir="本地路径"
 
5、[可选]临时目录
tmpdir=“自己本地路径”
 
6、[可选]数据目录
datadir=“自己本地路径/Data/”
 
7、主机,读写都可以
read-only=O
 
8、[可选]设置不要复制的数据库
binlog-ignore-db=mysql
 
9、[可选]设置只复制某个数据库
binlog-do-db=需要复制的主数据库名字
 
二、从机修改my.cnf配置文件:
1、[必须]从服务器唯一ID
server-id=2
 
2、[可选]启用二进制日志
log-bin=/var/lib/mysql/mysql-bin
 
三、配置文件,请主机+从机都重启后台mysql服务
linux中:
service mysql stop
service mysql start
 
如果你和我一样是用的docker容器可以这样重启:
docker restart xxxxxx
 
四、在主机上建立帐户并授权slave
 
在主服务器上执行此命令,允许从服务器使用指定的用户名和密码连接到主服务器,并读取二进制日志进行数据复制。
创建用户并设置密码:
CREATE USER 'xxxx'@'从机器数据库IP' IDENTIFIED BY '123456';
 
授予用户复制权限:
GRANT REPLICATION SLAVE ON *.* TO 'xxxx'@'从机器数据库IP';
 
刷新权限
FLUSH PRIVILEGES;
 
GRANT是MySQL中的一个命令,用于授予用户特定的权限。REPLICATION SLAVE是授予的权限类型,允许指定用户读取主服务器的二进制日志,以便进行数据复制。ON *.*:*.*表示权限适用于所有数据库和所有表。也就是说,这个用户可以访问主服务器上的所有数据库进行复制操作。TO 'xxxx'@'从机器数据库IP':xxxx是要创建或更新的用户名,不要使用rootIDENTIFIED BY用于设置或更新指定用户的密码,123456是该用户的密码。
查询master的状态
show master status;
 
记录下File和Position的值
 
 执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
五、在Linux从机上配置需要复制的主机
在MySQL命令行中执行以下命令:
CHANGE MASTER TO MASTER_HOST='主机IP',
MASTER_USER='xxxx',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='File文件名',
MASTER_LOG_POS=Position数字;
 
启动从服务器复制功能:
start slave;
 
查看主从配置状态:
show slave status\G
 
下面两个参数都是Yes,则说明主从配置成功!

如果上面的position输错了,可以重置
reset slave;
 
然后暂停主从复制
stop slave;
 
重新配置
CHANGE MASTER TO MASTER_HOST='主机IP',
MASTER_USER='xxxx',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='File文件名',
MASTER_LOG_POS=Position数字;
 
然后开启
start slave;
 
六、主机新建库、新建表、insert记录,从机复制
主机输入:
CREATE DATABASE testdb;
USE testdb;
CREATE TABLE testtable (id INT PRIMARY KEY, value VARCHAR(50));
INSERT INTO testtable VALUES (1, 'Hello World');
 

从机自动同步

七、如何停止从服务复制功能
stop slave;
 
如果有一段数据暂时不要,从机可以停止主从复制后,从主机那里查询新的position刻度,重新开始复制。
