高可用数据库集群mariadb(mysql)

    一、概述
        是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件
    二、端口号
                                               22
    三、高可用MHA简述
        目前在mysql高可用方面是一个成熟的方案,是一套优秀的高可用环境下故障切换和主从提升的高可用软件
    四、原理
        组成
                                    MHA Manager(管理节点)
                                    MHA Node(数据节点)
        在MHA自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据的不丢失,但这并不总是可行的。例如,如果主服务器硬件故障或无法通过ssh访问,MHA没法保存二进制日志,只进行故障转移而丢失了最新的数据。使用MySQL 5.5的半同步复制,可以大大降低数据丢失的风险。MHA可以与半同步复制结合起来。如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性。

        目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库,因为至少需要三台服务器,出于机器成本的考虑,淘宝也在该基础上进行了改造,目前淘宝TMHA已经支持一主一从。MHA 适合任何存储引擎, 只要能主从复制的存储引擎它都支持,不限于支持事物的 innodb 引擎。

        我们自己使用其实也可以使用一主一从,但是master主机宕机后无法切换,以及无法补全二进制日志。master的mysqld进程crash(停止工作)后,还是可以切换成功,以及补全二进制日志
    五、简述流程
        1、先找服务器
                            至少四台
                            安装系统centos5.7版
        2、数据库安装
        3、免密设置
                            (1)生成密钥

                                        ssh-keygen -t rsa

                            (2)复制密钥

                                        ssh-copy-id -i

                            (3)粘贴

                                        scp

        4、主从复制
        5、测试
    六、架构高可用数据库集群mariadb(mysql)_第1张图片
        
    七、安装部署
        1、安装
            (1)环境
                                centos7.5.1804
                                准备四台机器

 

                    角色                  节点                ip                       说明
                    manager                node1        192.168.174.130        管理
                    master                node2        192.168.174.131        主
                    slave1                node3        192.168.174.132        从
                    slave2                  node4        192.168.174.133      从

            (2)yum安装

                epel-release
                mariadb mariadb-server
                rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

            (3)修改配置文件

                vim /etc/my.cnf

                    
            (4)重启服务

                systemctl restart mysqld

            (5)授权给从用户

                grant ...

            (6)查看状态

            (7)配置从服务器

                授权manager

            (8)创建manager配置文件

                /etc/mha_master
                /etc/mha_master/mha.cnf

            (9)对各个节点进行检测

            (10)检查mysql复制集群的连接配置参数是否ok

        2、部署
            1、主机名设置
                临时修改主机名

                    hostname 主机名

                永久修改主机名

                    hostnamectl set-hostname 主机名

            2、hosts文件修改
                                指定客户端用户跟IP

 [root@localhost ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.174.130 node1
192.168.174.131 node2
192.168.174.132 node3
192.168.174.133 node4

            3、关闭防火墙
                                    四台全关
            4、生成密钥

[root@node1 ~]# ssh-keygen -t rsa

[root@node2 ~]# ssh-keygen -t rsa

[root@node3 ~]# ssh-keygen -t rsa

[root@node4 ~]# ssh-keygen -t rsa

            5、复制密钥到代理服务器node1

              

[root@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1
[root@node2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1
[root@node3 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1
[root@node4 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1

            6、在node1查看是否已复制过来

[root@node1 ~]# cat /root/.ssh/authorized_keysau


                    
            7、将authorized_keysau密钥文件发送给node2/3/4

 

[root@node1 ~]# scp .ssh/authorized_keys root@node2:.ssh/
[root@node1 ~]# scp .ssh/authorized_keys root@node3:.ssh/
[root@node1 ~]# scp .ssh/authorized_keys root@node4:.ssh/

            8、测试免密登录

[root@node1 ~]# ssh node2

[root@node1 ~]# ssh node3

[root@node1 ~]# ssh node4

            9、master主服务器配置

[root@node2 ~]# yum -y install epel-release
[root@node2 ~]# yum -y install mariadb mariadb-server
[root@node2 ~]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm 

修改配置文件
[root@node2 ~]# vim /etc/my.cnf
server-id = 1
log-bin = master-log
relay-log = relay-log
skip_name_resolve
[root@node2 ~]# systemctl restart mariadb #重启mysql

            10、master主服务器操作                

[root@node2 ~]# mysql              #登录

#授权用户给从库使用
MariaDB [(none)]> grant replication slave on *.* to ‘slave’@'%' identified by '123'; 
Query OK, 0 rows affected (0.04 sec)

#授权用户给manager管理master使用
MariaDB [(none)]> grant all on *.* to ‘mha’@'%' identified by '123'; 
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show master status;                #查看数据库位置及文件名
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-log.000003 |      529 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

            11、slave1从服务器操作

                

[root@node2 ~]# mysql              #登录

#授权用户给从库使用
MariaDB [(none)]> grant replication slave on *.* to ‘slave’@'%' identified by '123'; 
Query OK, 0 rows affected (0.04 sec)

#授权用户给manager管理master使用
MariaDB [(none)]> grant all on *.* to ‘mha’@'%' identified by '123'; 
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show master status;                #查看数据库位置及文件名
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-log.000003 |      529 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

            12、slave2从服务器操作

              

[root@node4 ~]# yum -y install mariadb mariadb-server epel-release
[root@node4 ~]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm 
[root@node3 ~]# vim /etc/my.cnf                     #配置一下参数
server-id = 3                 
relay-log = relay-log         
log-bin = master-log         
read_only = ON               
relay_log_purge = 0           
skip_name_resolve              
log_slave_updates = 1
[root@node3 ~]# mysql                                       #登录

MariaDB [(none)]> change master to master_host='192.168.174.131',master_user='slave',master_password='123',master_log_file='master-log.000003',master_log_pos=529;                         #授权指定主服务器数据库
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> start slave;                              #开启从服务
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> show slave status \G;                  #查看从数据库连接状态

#授权用户给manager管理slave使用  
MariaDB [(none)]> grant all on *.* to ‘slave’@'%' identified by '123';
Query OK, 0 rows affected (0.00 sec)                       #创建slave用户供管理服务器使用,与slave1用户一致


            13、manager管理服务器操作
                

[root@node4 ~]# yum -y install mariadb mariadb-server epel-release
[root@node4 ~]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm 
[root@node3 ~]# vim /etc/my.cnf                     #配置一下参数
server-id = 3                 
relay-log = relay-log         
log-bin = master-log         
read_only = ON               
relay_log_purge = 0           
skip_name_resolve              
log_slave_updates = 1
[root@node3 ~]# mysql                                       #登录

MariaDB [(none)]> change master to master_host='192.168.174.131',master_user='slave',master_password='123',master_log_file='master-log.000003',master_log_pos=529;                         #授权指定主服务器数据库
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> start slave;                              #开启从服务
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> show slave status \G;                  #查看从数据库连接状态

#授权用户给manager管理slave使用  
MariaDB [(none)]> grant all on *.* to ‘slave’@'%' identified by '123';
Query OK, 0 rows affected (0.00 sec)                       #创建slave用户供管理服务器使用,与slave1用户一致

            14、对各个节点进行检测

              

 [root@node1 ~]# masterha_check_ssh --conf=/etc/mha_master/mha.cnf

                    高可用数据库集群mariadb(mysql)_第2张图片
            15、检查管理的MySQL复制集群的连接配置参数是否OK

 

                

 [root@node1 ~]# masterha_check_ssh --conf=/etc/mha_master/mha.cnf

                    高可用数据库集群mariadb(mysql)_第3张图片

 

你可能感兴趣的:(MHA数据库集群,MHA高可用数据库集群部署,流程步骤,数据库)