Mysql-replication(主从复制)

### Mysql-replication(主从复制)

概念:主从复制AB复制,允许将来自一个Mysql数据库服务器(主服务器)的数据复制到一个或多个Mysql数据库服务器(从服务器)

根据配置,您可以复制数据库中的所有数据库,所选数据库甚至选定的表

Mysql主从复制优点:

1.横向策略,可以添加多台从服务器。主服务器负责写入和更新。从服务器复制,提高读取速度。

2.数据安全。主服务器宕机,从服务器可顶替主服务器继续工作

3.分析数据

4.备份,减轻主服务器压力


*Replication原理:*

主服务器上边的任何修改都会保存在二进制日志(Bin-log)日志里面*

*从服务器上面启动一个I/O线程,连接到主服务器上面请求读取二进制日志,将读取的二进制日志写在本地的Realy-log(中继日志)里面。*

*开启SQL线程,读取中继日志Realy-log,发现有更新立即把更新内容在本机的数据库上边执行一遍*

执行步骤:

1.在主从服务器上进行解析:

例:主服务器: 192.168.1.2  mysql-master

        从服务器: 192.168.1.3  mysql-slave

分别加入到两台服务器的解析中:

vim /etc/hosts

192.168.1.2  mysql-master

192.168.1.3  mysql-slave

2.开启主服务器二进制日志并配置唯一的服务器ID:指定日志位置并授予权限,重启主服务器数据库服务

vim /etc/my.cnf

[mysqld]

log-bin=/var/log/mysql/mysql-bin

server-id=1

mkdir /var/log/mysql/

chown mysql.mysq /var/log/mysql

systemctl restart mysqld

从服务器:开启server-id =2

3.主服务器:创建用户授予复制的权限

grant replication slave on    * . *  to  'repl'@'%'  identified by '123'

4.从服务器进行测试:

mysql -urepl -p'123'  -h mysql-master

5.主服务器查看:  show master status \G;

6.从服务器执行:

[root@mysql-slave1 ~]# mysql -uroot -p'dY3K2((y/hhk'

mysql> CHANGE MASTER TO

MASTER_HOST='mysql-master', 

MASTER_USER='repl',

MASTER_PASSWORD='123',

MASTER_LOG_FILE='mysql-bin.000002',

MASTER_LOG_POS=681;


#MASTER_HOST: 主服务器的主机名或者是ip地址

#MASTER_USER: 主服务器的用户名,我们设置的是repl

#MASTER_PASSWORD: 密码

#MASTER_LOG_FILE:日志文件是哪个

#MASTER_LOG_POS:日志的位置


mysql> start slave;  # 主服务器不需要启动

mysql> show slave status\G # 均为yes即可

            Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

你可能感兴趣的:(Mysql-replication(主从复制))