MySQL主从安装

1 适用情况说明。

  Mysql主从同步集群,注意从服务器需要设定只读保护从服务器数据安全。

数据库的优化设计对以后web项目能否承担高并发所带来的巨大负担是个非常好的解决方案。主从同步和读写分离就是个常用的方法,主数据库用来写入数据,从数据库用来查询,分担了主数据库的一大部分工作,这样做的好处是当主服务器崩了之后,还是在从服务器上获取到数据,起到的备份的作用。

接下来说说如何实现数据库的主从同步和读写分离

看个人情况,可有三四台主机都没问题。本人现在是用2台服务器,实现2台服务器数据库的主从同步。

 

2 软件版本说明:

  Centos7.2-1511

  5.5.56-MariaDB

 

配置主数据库:

 

1. vi打开my.cnf:

vi /etc/my.cnf

2. [mysqld]标签下面增加以下代码:

server-id=1   #主数据库的id  

log-bin=master-bin   #日志路径,作用是从数据库是根据这个日志来复制主数据库的数据的

3. systemctl restart mariadb

4. 主服务器进行数据备份

 

数据库锁表

MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;

Query OK, 0 rows affected (0.00 sec)

开多一个会话窗口

 

[root@master ~]# mysqldump -uroot -p --all-databases > /tmp/db.sql

[root@master ~]# scp /tmp/db.sql 192.168.9.11:/tmp/db.sql

 

记录当前日志位置并解锁

 

MariaDB [(none)]> show master status;

+--------------------+----------+--------------+------------------+

| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+--------------------+----------+--------------+------------------+

| marirdb-bin.000002 |     4458 |              |                  |

+--------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

 

 

MariaDB [(none)]> UNLOCK TABLES;

Query OK, 0 rows affected (0.00 sec)

 

grant replication slave on *.* to 'slaveuser'@'192.168.9.11' identified by 'slaveuser';

flush privileges;

 

在从MariaDB服务器上还原数据

首先安装

Yum install mariadb-server mariadb-client –y

Systemctl start mariadb

Systemctl enable mariadb

 

[root@slave ~]# mysql -uroot -p < /tmp/db.sql

 

1. vim打开my.cnf:

vim /etc/my.cnf

 

2. [mysqld]标签下面增加以下代码:

server-id=2   #这个id必须不能和主数据库相同  

read-only=on  #设置该数据库是只读状态  

relay-log=relay-bin  #日志  

 

重启mariadb服务

systemctl restart mariadb

 

在主服务器的数据库上查询主服务状态

 

SHOW MASTER STATUS  

进入从服务器的数据库:master_host需改为自己的主服务器地址

change master to master_host='192.168.8.230',master_user='slaveuser',master_password='slaveuser'master_log_file='master-bin.000005',master_log_pos=882

 

启动slave同步(在数据库中)

START SLAVE;

 

slave服务器上查看slave同步的状态

show slave status\G

查看Slave_IO_Running和Slave_SQL_Running是否都为yes(一定要全部为yes。否则就是你配置错了,再重新配置一遍从数据库)

 

 

就这样,你可以在主数据库里创一个数据。然后再在从数据库里查看是否也有这个数据库。经本人测试是成功的。而且从数据库是不能够创建和插入数据的,因为设置成只读状态了。这样就实现了读写分离。在实际项目中,可以利用主数据库插入,更新数据,从数据用来查询数据。这样极大的减轻了数据库的负担。保障web项目的高可用性

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
KubeSphere是一个开源的容器化平台,它提供了一套完整的容器管理解决方案。要在KubeSphere上安装MySQL主从复制,可以按照以下步骤进行操作: 1. 创建MySQL主从复制的配置文件:创建一个名为mysql-replication.yaml的文件,并将以下内容复制到文件中: ```yaml apiVersion: v1 kind: Service metadata: name: mysql-master labels: app: mysql spec: ports: - port: 3306 selector: app: mysql tier: master clusterIP: None --- apiVersion: v1 kind: Service metadata: name: mysql-slave labels: app: mysql spec: ports: - port: 3306 selector: app: mysql tier: slave clusterIP: None --- apiVersion: apps/v1 kind: StatefulSet metadata: name: mysql spec: serviceName: mysql-master replicas: 2 selector: matchLabels: app: mysql tier: master template: metadata: labels: app: mysql tier: master spec: containers: - name: mysql image: mysql:5.7 env: - name: MYSQL_ROOT_PASSWORD value: "password" ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumeClaimTemplates: - metadata: name: mysql-persistent-storage spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi --- apiVersion: apps/v1 kind: StatefulSet metadata: name: mysql-slave spec: serviceName: mysql-slave replicas: 2 selector: matchLabels: app: mysql tier: slave template: metadata: labels: app: mysql tier: slave spec: containers: - name: mysql image: mysql:5.7 env: - name: MYSQL_ROOT_PASSWORD value: "password" ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumeClaimTemplates: - metadata: name: mysql-persistent-storage spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi ``` 2. 使用kubectl命令进行部署:在终端中执行以下命令,将配置文件部署到KubeSphere集群中。 ```shell kubectl apply -f mysql-replication.yaml ``` 3. 验证MySQL主从复制是否成功:可以使用以下命令验证MySQL主从复制是否正常工作。 ```shell kubectl exec -it mysql-0 -- mysql -uroot -ppassword -e "SHOW MASTER STATUS;" kubectl exec -it mysql-2 -- mysql -uroot -ppassword -e "SHOW SLAVE STATUS\G" ``` 以上是在KubeSphere上安装MySQL主从复制的步骤。如果有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值