MySQL主从复制

2019-08-15  本文已影响0人  光明_7c13

MySQL Replication
主从复制(也称 AB 复制)允许将来自一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)。

复制是异步的 从站不需要永久连接以接收来自主站的更新。

MySQL中主从复制的有点包括:

配置步骤

1.在主服务器上,必须启用二进制日志记录并配置唯一的服务器ID,需要重启服务器
编辑主服务器的配置文件

[mysqld]
log-bin=/var/log/mysql/mysql-bin
server-id=1
一般主服务器上id为1

注意:
如果省略server-id(或者将其显示设置为0),主服务器将
拒绝来自从服务器的任何连接。

创建日志目录并且赋予MySQL权限

mkdir /var/log/mysql
chown mysql.mysql -R /var/log/mysql

重启服务

systemctl restart mysqld

为了在使用带事务的InnoDB进行复制设置时尽可能提高持久性和一致性,
您应该在master my.cnf文件中使用以下配置项:

innodb_flush_log_at_trx_commit = 1
sync_binlog = 1

需要确保主服务器上skip_networking选项处于OFF关闭状态,OFF是默认值。
如果是启用的,则主站和从站无法通信,并且复制失败

show variables like '%skip_networking%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| skip_networking | OFF   |
+-----------------+-------+
1 row in set (0.00 sec)

2.我们需要创建一个专门用于复制数据的用户
每当主服务器内容更新时,从服务器需要使用主服务器的MySQL用户名和密码连接到主站

在主服务器上创建一个用户,并且赋予该用户复制的权限

create user 'repl'@'%';
greate    replication    slave    on    *.*     to    'repl'@'%'   identified  by  'QFedu123!';

3.在从服务器上使用刚才的用户进行测试连接

mysql  -urepl  -P'QFedu123!'  -h主服务器ip

主服务器中有数据

mysqldump  -u用户名  -p密码  --all-databases  --master-data=1 > dbdump.db

这里的用户是主服务器的用户

如果不使用 --master-data 参数,则需要手动锁定单独会话中的所有表。

2.从主服务器中使用 scp 或 rsync 等工具,把备份出来的数据传输到从服务器中。
在主服务中执行如下命令

scp  dbdump.db root@mysql-slave1:/root/

3.配置从服务器,并重启
在从服务器 上编辑其配置文件 my.cnf 并添加如下内容:

[mysqld]
server-id=2

4.导入数据到从服务器,并配置连接到主服务器的相关信息
登录到从服务器上,执行如下操作

/*导入数据*/
mysql> source   /root/fulldb.dump
或者
mysqldump -u   -p   

在从服务器配置连接到主服务器的相关信息

mysql> CHANGE MASTER TO
MASTER_HOST='mysql-master1',  -- 主服务器的主机名(也可以是 IP) 
MASTER_USER='repl',                  -- 连接到主服务器的用户
MASTER_PASSWORD='123';        == 到主服务器的密码

使用mysqldump -u -p 这条命令恢复数据库时
需要添加
master_log_file='mysql-bin.000001'
master_log_pos=111
这两条配置 需要在备份的库中查找到

5.启动从服务器的复制线程

mysql> start slave;
Query OK, 0 rows affected (0.09 sec)

检查是否配置成功

show slave status\G;
上一篇 下一篇

猜你喜欢

热点阅读