2_项目_构建MySQL主从复制集群

项目描述:构建一个简单的MySQL主从复制集群

项目环境:

2台2c/4G的服务器,centos7.9,mysql 5.7

项目描述:

为了提升MySQL的并发能力构建一个简单的MySQL集群,实现读写分离功能,大大提升MySQL集群的业务处理能力。 同时深入学习MySQL的整体部署何对集群架构的理解。

项目步骤:

1、准备好2台安装好系统的机器,使用一键部署脚本二进制版本的MySQL,并且设置好my.cnf配置文件的内容。

2、在master服务器上开启二进制日志和配置server_id,从服务器上配置也配置server_id

[root@mysql ~]# cat /etc/my.cnf
[mysqld_safe]

[client]
socket=/data/mysql/mysql.sock

[mysqld]
socket=/data/mysql/mysql.sock
port = 3306
open_files_limit = 8192
innodb_buffer_pool_size = 512M
character-set-server=utf8
log_bin
server_id = 1  # slave主机上为2
 
[mysql]
auto-rehash
prompt=\u@\d \R:\m  mysql>

3、创建用来复制二进制文件的用户并赋权。

root@(none) 21:28  mysql>create user 'sc_slave'@'192.168.169.147' identified by '123456';
Query OK, 0 rows affected (0.01 sec)
root@(none) 21:29  mysql>grant replication slave on *.* to 'sc_slave'@'192.168.169.147';
Query OK, 0 rows affected (0.00 sec)

4、在master上面做一个全备,导出数据到slave上,保持主备机数据一致

主(192.168.168.158)上操作(导出数据):

[root@mysql ~]# mysqldump -uroot -p'Sanchuang123#' --all-databases >/root/all_db.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@mysql ~]# scp /root/all_db.sql root@192.168.169.147:/root

备(192.168.168.147)上操作(导入数据):

[root@node1 ~]# mysql -uroot -p'Sanchuang123#' < all_db.sql
mysql: [Warning] Using a password on the command line interface can be insecure.

5、在slave上配置去master上拉去二进制日志的用户信息和日志文件的名称和位置号

root@(none) 21:47  mysql>show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |      631 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

root@(none) 21:48  mysql>flush logs;
Query OK, 0 rows affected (0.01 sec)

root@(none) 21:48  mysql>show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000004 |      154 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

在slave上启用master信息

root@(none) 05:48  mysql> CHANGE MASTER TO MASTER_HOST='192.168.169.158' ,
    ->  MASTER_USER='sc_slave',
    ->  MASTER_PASSWORD='123456',
    ->  MASTER_PORT=3306,
    ->  MASTER_LOG_FILE='mysql-bin.000004',
    ->  MASTER_LOG_POS=154;
Query OK, 0 rows affected, 1 warning (0.01 sec)

6、在master和slave上都关闭防火墙和SELinux

root@mysql ~]# service firewalld stop
Redirecting to /bin/systemctl stop  firewalld.service
[root@mysql ~]# systemctl disable firewalld
[root@mysql ~]# getenforce
Disabled

7、在slave服务器上启动slave服务,查看IO线程和SQL线程是否正常排错,验证主从复制的效果

root@(none) 05:56  mysql>start slave;
Query OK, 0 rows affected (0.00 sec)
root@(none) 05:57  mysql>show slave status\G;  # 启动效果
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.169.158
                  Master_User: sc_slave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
          Read_Master_Log_Pos: 154
               Relay_Log_File: node1-relay-bin.000002
                Relay_Log_Pos: 320
        Relay_Master_Log_File: mysql-bin.000004
             Slave_IO_Running: Yes  # IO线程已开启
            Slave_SQL_Running: Yes  # SQL线程已开启

注:清除从服务器上填写的主服务器的信息

stop slave
reset slave all

思考问题

1、如果主挂了,如何将备变成主?

目前只能手动 停止从服务器上的的slave服务,把业务的协和查询操作都切到从服务器上,提升从为主服务器,在搞一台服务器做从,认原来的从为主。要求原来的从服务器需要开启二进制日志。

1、stop slave
2、reset master
3、开启二进制日志
4、建立授权复制的用户
5、再启动一台机器做从,配置master信息去拉取二进制日志

2、是否有自动进行主从切换的操作?

1、自己写脚本完成

1. 监控master
   在另外一台机器扫描端口: nc 3306
   直接访问 mysql -p .. -u .. -p..
   每秒监控一次

2、是否有第三方软件完成

3、怎么在MySQL提供服务服务的时候搭建主从复制?

就是在线搭建主从复制

使用 Xtrabackup 在线对MySQL做主从复制

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这个手刹不太灵儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值