部署数据库主从备份1

网友投稿 561 2022-05-28

在ChinaSkill-node2实例节点按照2.4部署 MariaDB数据库(1)安装MariaDB 10数据库(2)配置MariaDB数据库中的步骤,部署并启动MariaDB数据库服务。

安装完数据库并启动之后,使用命令查看两个数据库状态,命令如下:

chinaskill-node1节点:

[root@chinaskill-node1 ~]# systemctl status mariadb

mariadb.service - MariaDB 10.1.47 database server

Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)

Drop-In: /etc/systemd/system/mariadb.service.d

└─migrated-from-my.cnf-settings.conf

Active: active (running) since Tue 2020-10-27 17:26:30 CST; 4min 53s ago

Docs: man:mysqld(8)

https://mariadb.com/kb/en/library/systemd/

Process: 14075 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)

Process: 14036 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)

Process: 14034 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)

Main PID: 14047 (mysqld)

Status: "Taking your SQL requests now..."

CGroup: /system.slice/mariadb.service

└─14047 /usr/sbin/mysqld

chinaskill-node2节点:

[root@chinaskill-node2 ~]# systemctl status mariadb

mariadb.service - MariaDB 10.1.47 database server

Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)

Drop-In: /etc/systemd/system/mariadb.service.d

└─migrated-from-my.cnf-settings.conf

Active: active (running) since Tue 2020-10-27 17:26:55 CST; 5min ago

Docs: man:mysqld(8)

https://mariadb.com/kb/en/library/systemd/

Process: 14078 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)

Process: 14039 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)

Process: 14037 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)

Main PID: 14050 (mysqld)

Status: "Taking your SQL requests now..."

CGroup: /system.slice/mariadb.service

└─14050 /usr/sbin/mysqld

按照2.4部署MariaDB数据库中的步骤,初始化chinaskill-node2节点的数据库,设置密码为Abc@1234。

在ChinaSkill-node1实例节点和ChinaSkill-node2实例节点配置域名解析,编辑配置文件/etc/hosts文件,配置为如下。

[root@chinaskill-node1 ~]# vi /etc/hosts

192.168.1.13    chinaskill-node1

192.168.1.4     chinaskill-node2

[root@chinaskill-node2 ~]# vi /etc/hosts

192.168.1.13    chinaskill-node1

192.168.1.4     chinaskill-node2

修改chinaskill-node1节点的数据库配置文件,在配置文件/etc/my.cnf.d/server.cnf中的[mysqld]增添如下内容。

[root@chinaskill-node1 ~]# cat /etc/my.cnf.d/server.cnf

... ...

[mysqld]

log_bin = mysql-bin                       #记录操作日志

binlog_ignore_db = mysql                  #不同步mysql系统数据库

server_id = 13                            #数据库集群中的每个节点id都要不同,一般使用IP地址的最后段的数字,例如192.168.1.13,server_id就写13

... ...

重启数据库服务,并进入数据库,命令如下:

[root@chinaskill-node1 ~]# systemctl restart mariadb

[root@chinaskill-node1 ~]# mysql -uroot -pAbc@1234

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 3

Server version: 10.1.47-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

在chinaskill-node1节点,授权在任何客户端机器上可以以root用户登录到数据库,然后在主节点上创建一个user用户连接节点chinaskill-node2,并赋予从节点同步主节点数据库的权限。命令如下:

MariaDB [(none)]> grant all privileges  on *.* to root@'%' identified by "Abc@1234";

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant replication slave on *.* to 'user'@'chinaskill-node2' identified by 'Abc@1234';

Query OK, 0 rows affected (0.00 sec)

修改chinaskill-node2节点的数据库配置文件,在配置文件/etc/my.cnf.d/server.cnf中的[mysqld]增添如下内容。

[root@chinaskill-node2 ~]# cat /etc/my.cnf.d/server.cnf

... ...

[mysqld]

log_bin = mysql-bin                       #记录操作日志

binlog_ignore_db = mysql                  #不同步mysql系统数据库

server_id = 4                            #数据库集群中的每个节点id都要不同,一般使用IP地址的最后段的数字,例如192.168.1.4,server_id就写4

... ...

修改完配置文件后,重启数据库服务,并在从节点chinaskill-node2上登录MariaDB数据库,配置从节点连接主节点的连接信息。master_host为主节点主机名chinaskill-node1,master_user为上一步中创建的用户user,命令如下:

[root@chinaskill-node2 ~]# systemctl restart mariadb

[root@chinaskill-node2 ~]# mysql -uroot -pAbc@1234

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 3

Server version: 10.1.47-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> change master to master_host='chinaskill-node1',master_user='user',master_password='Abc@1234';

Query OK, 0 rows affected (0.01 sec)

配置完毕主从数据库之间的连接信息之后,开启从节点服务。使用show slave status\G命令,并查看从节点服务状态,如果Slave_IO_Running和Slave_SQL_Running的状态都为YES,则从节点服务开启成功。命令如下:

MariaDB [(none)]> start slave;

MariaDB [(none)]> show slave status\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: chinaskill-node1

Master_User: user

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000001

Read_Master_Log_Pos: 705

Relay_Log_File: mysql2-relay-bin.000002

Relay_Log_Pos: 1004

Relay_Master_Log_File: mysql-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 705

Relay_Log_Space: 1314

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 12

Master_SSL_Crl:

Master_SSL_Crlpath:

Using_Gtid: No

Gtid_IO_Pos:

Replicate_Do_Domain_Ids:

Replicate_Ignore_Domain_Ids:

Parallel_Mode: conservative

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

Slave_DDL_Groups: 2

Slave_Non_Transactional_Groups: 0

Slave_Transactional_Groups: 0

1 row in set (0.000 sec)

可以看到Slave_IO_Running和Slave_SQL_Running的状态都是Yes,配置数据库主从集群成功。

在华为云上创建一台服务器,配置使用1核/4G内存/50G硬盘。操作方法参考上面的步骤,这边不再赘述。

使用远程连接工具CRT连接到云主机的公网IP,并修改主机名为mycat,命令如下:

# hostnamectl set-hostname mycat

# logout

[root@mycat ~]# hostnamectl

Static hostname: mycat

Icon name: computer-vm

Chassis: vm

Machine ID: 622ba110a69e24eda2dca57e4d306baa

Boot ID: c9e345d94abb4f0684ce75726c39dbcf

Virtualization: kvm

Operating System: CentOS Linux 7 (Core)

CPE OS Name: cpe:/o:centos:centos:7

Kernel: Linux 3.10.0-862.2.3.el7.x86_64

Architecture: x86-64

在mycat节点安装Java JDK环境,具体操作步骤如下:

进行安装Java JDK环境(使用默认的镜像源即可),命令如下:

[root@mycat ~]# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

... ...

安装完之后,可以使用命令查看Java JDK环境,命令如下:

[root@mycat ~]# java -version

openjdk version "1.8.0_262"

OpenJDK Runtime Environment (build 1.8.0_262-b10)

OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)

将Mycat服务的二进制软件包Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz上传到Mycat虚拟机的/root目录下,并将软件包解压到/use/local目录中。赋予解压后的Mycat目录权限。

[root@mycat ~]# tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/

[root@mycat ~]# chmod -R 777 /usr/local/mycat/

在/etc/profile系统变量文件中添加Mycat服务的系统变量,并生效变量。

[root@mycat ~]# echo export MYCAT_HOME=/usr/local/mycat/ >> /etc/profile

[root@mycat ~]# source /etc/profile

配置Mycat服务读写分离的schema.xml配置文件在/usr/local/mycat/conf/目录下,可以在文件中定义一个逻辑库,使用户可以通过Mycat服务管理该逻辑库对应的MariaDB数据库。在这里定义一个逻辑库schema,name为wordpress;该逻辑库wordpress对应数据库database为chinaskill-node1数据库节点上的wordpress;设置数据库写入节点为主节点chinaskill-node1;设置数据库读取节点为从节点chinaskill-node2。(可以直接删除原来schema.xml的内容,替换为如下。)

注意:IP需要修改成实际的IP地址。

[root@mycat ~]# cat /usr/local/mycat/conf/schema.xml

select user()

代码说明:

l sqlMaxLimit:配置默认查询数量。

l database:为真实数据库名。

l balance="0":不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。

l balance="1":全部的readHost与stand by writeHost参与select语句的负载均衡,简单来说,当双主双从模式(M1->S1,M2->S2,并且M1与M2互为主备),正常情况下,M2、S1、S2都参与select语句的负载均衡。

l balance="2":所有读操作都随机的在writeHost、readhost上分发。

l balance="3":所有读请求随机地分发到wiriterHost对应的readhost执行,writerHost不负担读压力,注意balance=3只在1.4及其以后版本有,1.3版本没有。

l writeType="0":所有写操作发送到配置的第一个writeHost,第一个挂了需要切换到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件dnindex.properties中。

l writeType="1":所有写操作都随机的发送到配置的writeHost。

修改schema.xml的用户权限,命令如下:

[root@mycat ~]# chown root:root /usr/local/mycat/conf/schema.xml

修改/usr/local/mycat/conf/目录下的server.xml文件,修改root用户的访问密码与数据库,密码设置为Abc@1234,访问Mycat的逻辑库为wordpress,命令如下。

[root@mycat ~]# cat /usr/local/mycat/conf/server.xml

在配置文件的最后部分,

000000

USERDB

然后删除如下几行:

user

TESTDB

true

保存并退出server.xml配置文件。

通过命令启动Mycat数据库中间件服务,启动后使用netstat -ntpl命令查看虚拟机端口开放情况,如果有开放8066和9066端口,则表示Mycat服务开启成功。端口查询情况如下图所示。

[root@mycat ~]# /bin/bash /usr/local/mycat/bin/mycat start

先在Mycat虚拟机上使用Yum安装mariadb-client服务。(参考2.4的操作步骤设置安装数据库的yum源)

[root@mycat ~]# yum install -y MariaDB-client

在Mycat虚拟机上使用mysql命令查看Mycat服务的逻辑库wordpress,因为Mycat的逻辑库wordpress对应chinaskill-node1节点上的数据库wordpress,所以可以查看库中已经创建的表。命令如下。

[root@mycat ~]# mysql -h127.0.0.1 -P8066 -uroot -pAbc@1234

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.6.29-mycat-1.6-RELEASE-20161028204710 MyCat Server (OpenCloundDB)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show databases;

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

| DATABASE |

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

| wordpress   |

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

1 row in set (0.001 sec)

MySQL [(none)]> use wordpress

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

MySQL [wordpress]> show tables;

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

| Tables_in_wordpress   |

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

| wp_commentmeta        |

| wp_comments           |

| wp_links              |

| wp_options            |

| wp_postmeta           |

| wp_posts              |

| wp_term_relationships |

| wp_term_taxonomy      |

| wp_termmeta           |

| wp_terms              |

| wp_usermeta           |

| wp_users              |

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

12 rows in set (0.02 sec)

在Mycat虚拟机节点使用mysql命令,通过9066端口查询对数据库读写操作的分离信息。可以看到所有的写入操作WRITE_LOAD数都在mysql1主数据库节点上,所有的读取操作READ_LOAD数都在mysql2主数据库节点上。由此可见,数据库读写操作已经分离到mysql1和mysql2节点上了。命令如下。

[root@mycat ~]# mysql -h127.0.0.1 -P9066 -uroot -p000000 -e 'show  @@datasource;'

查询结果如下图所示。

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

| DATANODE | NAME   | TYPE  | HOST         | PORT | W/R  | ACTIVE | IDLE | SIZE | EXECUTE | READ_LOAD | WRITE_LOAD |

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

| dn1      | hostM1 | mysql | 192.168.1.13  | 3306 | W    |      0 |   10 | 1000 |      46 |         0 |          0 |

| dn1      | hostS1 | mysql | 192.168.1.4    | 3306 | R    |      0 |    6 | 1000 |      44 |         3 |          0 |

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

至此,Mycat读写分离数据库案例完成。

根据2.5部署wordpress的web服务这一章所描述的内容,在mycat节点安装nginx和php服务,数据库文件使用提供的chinaskill-wordpress.sql文件自行导入至数据库主节点。

修改wp-config.php配置文件的时候,按照如下修改:

[root@mycat ~]# vi /usr/share/nginx/html/wp-config.php

// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //

/** WordPress数据库的名称 */

define('DB_NAME', 'wordpress');

/** MySQL数据库用户名 */

define('DB_USER', 'root');

/** MySQL数据库密码 */

define('DB_PASSWORD', 'Abc@1234');

/** MySQL主机 */

define('DB_HOST', '127.0.0.1:8066');  //这边是最关键的,要加读写分离数据库端口8066

/** 创建数据表时默认的文字编码 */

define('DB_CHARSET', 'utf8');

/** 数据库整理类型。如不确定请勿更改 */

define('DB_COLLATE', '');

服务安装完、配置修改完之后,通过浏览器去访问mycat节点的公网地址即可。

在华为云中选择MySQL的实例列表,选择上海区域,进行创建数据库操作,如下图所示:

按照如下图所示的配置购买数据库服务。

在确认完需要购买的配置后,单击“立即购买”按钮进行购买。

在创建完成后,单击右侧更多--初始化按钮进行数据库初始化,如下图所示:

单击“初始化”按钮后,会进入初始化操作界面,按照下图的选择进行初始化,设置密码为“Abc@1234”然后单击下方的“确认”按钮完成初始化工作,初始化预计时间为1分钟。

初始化之后,可以看见一台正常运行的云数据库,如下图所示:

单击界面右侧的“登录”按钮,进行登录,账号密码使用root:Abc@1234。登录之后的界面,如下图所示:

选择新建--新建库,进行新建库操作。

单击“新建库”按钮后,如下图所示:

单击“新建数据库”按钮,填写数据库名称为wordpress,如下图所示:

在创建完之后,选择数据管理--数据导入,进行数据的导入,如下图所示:

数据导入的时候,选择提供的chinaskill-wordpress.sql文件,如下图所示:

导入完成后,刷新页面,可以在库管理界面看到wordpress数据库中的表,如下图所示:

至此,云数据库创建与配置完毕。

在mycat节点,修改wp-config.php配置文件,将连接数据库的地址,修改为云数据库的地址,如下所示:

/** MySQL主机 */

define('DB_HOST', '192.168.0.13');

192.168.0.13是新建的云数据库的地址。

修改完毕后,访问网页即可。

chinaskill-node1节点和chinaskill-node2节点为主从数据库,所以备份数据库的时候只需要备份chinaskill-node1节点的数据库。具体命令如下:

首先创建result目录,然后使用mysqldump命令备份数据库。

[root@chinaskill-node1 ~]# mkdir /result

[root@chinaskill-node1 ~]# mysqldump -uroot -pAbc@1234 wordpress > /result/mysql_bak.sql

[root@chinaskill-node1 ~]# ll /result/

total 404

-rw-r--r-- 1 root root 411345 Oct 28 16:15 mysql_bak.sql

使用命令备份数据库完成。

进入设置告警策略界面,路径为云监控--告警配置--告警策略,如下图所示:

单击“新建”按钮,进行新建告警策略,告警策略填写的内容如下图所示:

在填写完毕后,单击下方的“完成”按钮,完成告警策略的添加。

在云服务器--云硬盘界面,可以查看之前创建的云硬盘,大小为40G,如下图所示:

单击右边导航栏的更多--扩容选项,进行云硬盘扩容,如下图所示:

进入硬盘扩容界面,将目标容量调整为50G,然后单击“下一步”按钮,如下图所示:

在扩容磁盘容量之后,需要扩容文件系统才会生效扩容,单击“开始调整”进行扩容文件系统,如下图所示:

调整完之后,云硬盘的空间变成了50G大小,如下图所示:

使用远程连接工具,连接到chinaskill-node1节点,查看云硬盘大小,如下所示:

[root@chinaskill-node1 ~]# lsblk

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

sr0     11:0    1 41.1M  0 rom

vda    253:0    0   50G  0 disk

└─vda1 253:1    0   50G  0 part /

vdb    253:16   0   50G  0 disk

可以看到硬盘vdb大小为50G,扩容云硬盘成功。

配置弹性伸缩需新建启动配置,使用镜像为自定义镜像chinaskill-node1。首先进入弹性伸缩界面,单击“启动配置”按钮,首先创建启动配置,如下图所示:

根据下图的内容修改启动配置,使用自定义镜像,即使用chinaskill-node1节点的快照。

在完成选择机型--设置主机--确认配置信息后,成功创建启动配置。

新建伸缩组。在弹性伸缩界面单击“伸缩组”按钮,进行配置伸缩组的配置,按照下图所示填写内容:

部署数据库主从备份1

填写后单击“下一步”按钮。

在选择负载均衡时,选用上面2.7案例配置负载均衡案例,然后单击“完成”按钮即可,如下图所示:

左上角云产品中点击云主机安全,点击“入侵检测→密码破解”,选择设置,点击取消。如下图所示:

由于阻断功能仅对专业版主机生效,需要升级专业版。如下图所示:

选择要升级的主机,进行升级成专业版,升级之后将自动阻断开关开启。

在升级完专业版之后,单击“设置”按钮,如下图所示:

在设置中,按照如下图所示的要求修改,5分钟内如果10次不成功,即永久阻断,在修改完之后,直接关闭设置按钮,设置自动生效。

至此,设置主机在10次登陆错误后,无法访问该主机成功。

MySQL 数据库

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:GaussDB(DWS)存储系列之行存表
下一篇:MRS IoTDB时序数据库的架构设计与实现(2)
相关文章