• 喜欢前端以及PHP的朋友们可以加PHP同好会QQ群 点击加入qq群
  • 最近在写一个项目---"小A微信托管平台",大家可以去帮忙测试一下!功能在不断完善中,敬请关注!点击进入
  • 本站使用了PHP8.1与HTTP2.0协议,速度简直超级快有木有?

Mysql8.0 开启主从复制(replication)

Linux Mr.Adam 4年前 (2021-01-07) 2104次浏览 已收录 0个评论

Mysql8.0 开启主从复制(replication)

Mysql8.0 开启主从复制

mysql replication 可以将一个 mysql 数据库服务器(主库)中的数据复制到一个或多个 mysql 数据库(从库)中。
主从复制有如下优点:
1.水平解决方案:将负载分散到多个从库以提高性能。所有的写入和更新都必须在主库上进行,读操作在一个或多个从库中进行,这样可以提高数据库的写入性能(主库只负责写入与更新),同时对于多个从库来说也能显著增加查询性能。
2.数据安全性:因为数据复制到从库,而且从库可以暂停复制过程,所以可以在从库上运行备份服务而不会损坏相应的主库数据。
3.分析:在主库上可以实时创建数据,而对信息的分析可以在从库上进行,不会影响主库的性能。
4.远程数据分发:可以使用复制为远程服务器站点创建本地数据的副本,无需永久访问主库。

Master 设置

1.首先修改 my.cnf 文件,在mysqld块中加入一条server_id,一般为服务器 ip 的最后一位数字
2.开启二进制日志,同样在mysqld块中加入一条log-bin,名称自定
3.指定二进制日志的格式,binlog-fomat,mixed|row|statement
配置如下:

[mysqld]
...
server-id=151
log-bin=master1_mysql_bin_log
binlog-format=mixed
...

然后我们重启 mysqld 进程

[root@centos8 ~]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL.... SUCCESS!

4.在 master 上需要创建一个用户,赋予REPLICATION SLAVEREPLICATION CLIENT权限,从库使用此账户链接到主库


mysql>CREATE USER 'master1slave'@'%' IDENTIFIED WITH mysql_native_password BY '111111';
mysql>GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'master1slave'@'%';
mysql>FLUSH PRIVILEGES;

接下来执行 show master status,看到如下内容则表示 master 设置完成。

mysql> show master status;
+------------------------------+----------+--------------+------------------+-------------------+
| File                         | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------------------+----------+--------------+------------------+-------------------+
| master1_mysql_bin_log.000001 |      156 |              |                  |                   |
+------------------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

Slave 配置

1.同样在my.cnf中加入server-id
2.在my.cnf中打开中继日志relay-log并指定relay-log为只读

[mysqld]
...
server-id=110
relay-log=mysql-relay
read-only=1
...

3.重启 mysqld 进程

Mysql 主从链接

1.首先需要在主库上备份所有数据库,在从库上全量恢复备份,使主从数据库一致

#在主服上
mysqldump -uroot -p111111 --all-databases --routines --events --single-transaction --master-data > dump.sql
#在从服上
mysql -uroot -p111111 -f < dump.sql

2.执行以下命令告诉从服链接哪个主服

mysql>change master to 
    ->master_host='192.168.123.151',
    ->master_user='master1slave',
    ->master_password='111111',
    ->master_log_file='master1_mysql_bin_log.000001',
    ->master_log_pos=156;
Query OK, 0 rows affected (0.20 sec)

3.开启 slave

mysql>start slave;

接下来看一下链接情况,show slave status,显示如下则表示链接成功!

mysql> show slave status \G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.123.151
                  Master_User: master1slave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master1_mysql_bin_log.000001
          Read_Master_Log_Pos: 2161
               Relay_Log_File: mysql-relay.000002
                Relay_Log_Pos: 2341
        Relay_Master_Log_File: master1_mysql_bin_log.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
...
...

至此主从复制就配置好了!


小 A 空间 , 版权所有丨如未注明转载 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Mysql8.0 开启主从复制(replication)
喜欢 (1)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址