前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >蓝鲸平台MySQL数据库管理规范建议

蓝鲸平台MySQL数据库管理规范建议

原创
作者头像
嘉为蓝鲸
修改2019-05-28 16:26:58
2.5K0
修改2019-05-28 16:26:58
举报
蓝鲸平台MySQL数据库管理规范建议
蓝鲸平台MySQL数据库管理规范建议

MySQL作为蓝鲸平台存取数据的主要数据库,其稳定性关系到蓝鲸平台的使用体验,而其数据安全性则可能关系到企业IT资产相关信息,在安装和维护蓝鲸平台的过程中应引起足够重视。本文将对如下几个出现过的问题进行分析和提供处理建议。这几个问题分别为:升级,配置日志自动清理,binlog手动清理维护,表清空,备份。

蓝鲸平台的MySQL数据库会在安装平台时自动安装,其版本为5.5.24,架构为主从复制(5台服务器情况下),下文分别对提到的几个问题进行描述。

MySQL升级

1.问题分析

蓝鲸平台默认安装的MySQL版本为5.5.24,一般不符合安全扫描的版本要求,为了避免在使用过程中由于安全问题需要重新升级数据库,建议在完成平台安装后及时进行数据库升级,此时数据库还没存入业务数据,升级无风险且升级效率高,基于已经在生成环境验证过的升级经验,为防止版本跨度过大导致的兼容问题,建议升级到MySQL5.5的最高版本即5.5.62,采用逻辑升级的方法,使用mysqldump将低版本的据库全库导出,再导入到安装好的新版本。

2. 逻辑升级过程

1、查当前MySQL进程

检查当前运行的MySQL的进程详情,主要是查看启动参数,用于升级后对比

[root@paas-1 install]# ps -ef |grep mysql

root 20407 8526 0 15:10 pts/3 00:00:00 grep --color=auto mysql

root 29942 1 0 Dec17 ? 00:00:00 /bin/sh /data/bkce/service/mysql/bin/mysqld_safe --datadir=/data/bkce/public/mysql/ --pid-file=/data/bkce/public/mysql/mysql.pid

mysql 30344 29942 5 Dec17 ? 13:17:37 /data/bkce/service/mysql/bin/mysqld --basedir=/data/bkce/service/mysql --datadir=/data/bkce/public/mysql/ --plugin-dir=/data/bkce/service/mysql/lib/plugin --user=mysql --log-error=/data/bkce/public/mysql//paas-1.err --pid-file=/data/bkce/public/mysql/mysql.pid --socket=/data/bkce/logs/mysql/mysql.sock --port=3306

2、全库备份

使用如下命令进行全库备份,备份路径可根据数据量,磁盘性能等进行调整

[root@paas-1 service]# mysqldump -uroot -x -A -E -R >/tmp/alldbback.sql

3、备份安装目录,数据目录

停止数据库服务,并对basedir,datadir目录进行备份,升级前一定要进行备份,避免出现意外进行回退

[root@paas-1 service]# mkdir /data/backup

[root@paas-1 service]# mv mysql/ /data/backup/

[root@paas-1 service]# cd /data/bkce/public/

[root@paas-1 public]# mv mysql /data/backup/mysql_data

4、新版本解压安装

使用二进制的包进行解压安装,下载5.5.62版本的压缩包,上传至安装目录进行解压,创建软连接为mysql

[root@paas-1 service]# tar zxf /tmp/mysql-5.5.62-linux-glibc2.12-x86_64.tar.gz

[root@paas-1 service]# ln -s mysql-5.5.62-linux-glibc2.12-x86_64/ mysql

5、初始化数据库

对数据目录进行初始化

[root@paas-1 public]# mkdir mysql

[root@paas-1 mysql]# cd /data/bkce/service/mysql

[root@paas-1 mysql]# ./s/mysql_install_db --user=mysql --basedir=/data/bkce/service/mysql --datadir=/data/bkce/public/mysql/

Installing MySQL system tables...

181227 15:39:10 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.

181227 15:39:10 [Note] /data/bkce/service/mysql/bin/mysqld (mysqld 5.5.62-log) starting as process 24766 ...

OK

Filling help tables...

181227 15:39:11 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.

181227 15:39:11 [Note] /data/bkce/service/mysql/bin/mysqld (mysqld 5.5.62-log) starting as process 24790 ...

OK

To start mysqld at boot time you have to copy

support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !

To do so, start the server, then issue the following commands:

/data/bkce/service/mysql/bin/mysqladmin -u root password 'new-password'

/data/bkce/service/mysql/bin/mysqladmin -u root -h 132.108.252.43 password 'new-password'

Alternatively you can run:

/data/bkce/service/mysql/bin/mysql_secure_installation

which will also give you the option of removing the test

databases and anonymous user created by default. This is

strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:

cd /data/bkce/service/mysql ; /data/bkce/service/mysql/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl

cd /data/bkce/service/mysql/mysql-test ; perl mysql-test-run.pl

Please report any problems at http://bugs.mysql.com/

6、修改配置并启动

因原my.cnf配置文件未设置pid file,新版启动时会根据主机名自动生成,跟原进程下的pid文件不符,需要在配置文件里添加如下配置:

pid-files=

vim /etc/my.cnf

[mysqld]

/data/bkce/public/mysql/mysql.pid

启动数据库:

/data/bkce/service/mysql/bin/mysqld_safe &

7、导入数据

登录mysql,确认版本已经升级至5.5.62,接下来导入备份的数据

mysql -uroot </tmp/alldbback.sql

等待其导入完成即可。

8、恢复mysql.sh文件

在蓝鲸平台中控机上控制mysql服务的启停,是通过调用安装目录下的mysql.sh文件实现的,所以需要将该文件恢复到新版安装后的目录下

[root@paas-1 mysql]# cd /data/backup/mysql/bin/

[root@paas-1 bin]# cp mysql.sh /data/bkce/service/mysql/bin/

9、升级确认

通过中控机查看及启停mysql,检查是否正常

[root@paas-1 mysql]# cd /data/install/

[root@paas-1 install]# ./bkcec status mysql

[root@paas-1 install]#./bkcec stop mysql

[root@paas-1 install]#./bkcec start mysql

[root@paas-1 install]# ps -ef |grep mysql

检查蓝鲸平台,查看数据库调用是否正常。到此,整个升级过程完成。

MySQL配置

1.问题分析

我处理过的蓝鲸平台MySQL问题,很多是因为磁盘空间不足导致,而磁盘空间不足多是由于binlog日志过多而未及时清理造成,蓝鲸在客户处使用过程中由于没有专门的运维团队,通常很少去关注后台服务器的情况,所以binlog自动清理的机制强烈建议开启。

2.测试过程

1、设置binlog自动清理

参数expire_logs_days表示超过该参数值的binlog日志会自动清理,可以根据服务器磁盘空间来确定该值的设置,前提是保证日志保留时间大于数据库备份频率,比如备份是7天一次全备,则expire_logs_days的值应大于7,空间充足情况下一般建议设置为7天或者15天。

设置方法,在参数文件中配置expire_logs_days=7即可在重启MySQL后生效。也可以在MySQL命令行直接设置:

mysql> set global expire_logs_days=7;

在命令行设置不会立即对日志进行清理,需要达到如下几种触发条件之一:

1、binlog大小超过max_binlog_size

2、手动执行flush logs

3、MySQL服务重新启动时

所以如果是MySQL使用过程中命令行设置了该参数,可以使用flush logs切换日志触发清理,此时需要注意清理需要占用服务器I/O资源,应在不影响使用情况下执行。

binlog手动清理维护

1.问题分析

当磁盘空间由于binlog占用空间不足,MySQL服务已经挂起时,需要手动清理binlog日志。处理过的几次问题是管理员在清理binlog时删除了所有的binlog日志,磁盘空间释放后,重启MySQL服务发现启动失败,其原因就是binlog被全部清理后,MySQL服务启动需要写入日志到最新的一个binlog,而其记录的最后一个binlog找不到,所以会报错启动失败。

1、手动清理的正确方法

手动清理binlog日志时,需要保留最新一个日志,保证数据库重启后可以检测到最新的写入日志,确认最后一个日志,可以根据日志名称(序号递增)或者写入时间来确定。

2、删除所有日志后的处理方法

如果已经删除了所有的日志而无法启动数据库,此时可以按照如下方法处理:

在datadir目录下找到mysql-bin.index文件,该文件是记录数据库里的binlog信息,清空该文件内容,重启数据库,此时日志会重置为1号,数据库恢复正常。

表清空操作

1.问题分析

由于数据库里某些日志表太大,影响查询和插入表的效率,有时会做清空表的操作,而管理员维护MySQL数据库时习惯使用图形工具如Navicat,当表的数据比较大时,从图形工具点击清空表,系统会卡住,原因是工具里的情况表是delete的操作,数据库执行时会每条数据进行删除并记录redo,undo日志,占用数据库资源较大导致的数据库hang住。

1、表清空的正确方法

如果确认表数据是不需要的,请使用truncate的方式情况表,效率非常高且占用资源少,SQL语法如下:

mysql> truncate table_name;

MySQL备份

1.问题分析

数据库最重要的就是数据,数据的安全高于一切,而完善的备份是数据安全的最后一道防线,蓝鲸平台是一个企业级的平台,其存储的数据也是至关重要的,所以备份策略必须合理制定。MySQL 最常用的备份方式分为逻辑备份mysqldump,物理备份xtrabackup,当数据量不大,备份时间在1小时内可以完成的,使用mysqldump即可,更大数据量则需要考虑使用xtrabackup,下面主要介绍mysqldump。

2.备份通用性命令

mysqldump是个很灵活的工具,有很多参数可以在备份时使用,不过对于蓝鲸平台的mysql备份,建议使用如下通用的备份命令即可:

mysqldump -uroot -p --all-databases --master-data=2 --flush-logs --single-transaction > /backup/dbfull-`date +%F`.sql

如果需要压缩备份文件,可以用如下命令:

mysqldump -uroot -p --all-databases --master-data=2 --flush-logs --single-transaction |gzip > dbfull-`date +%F`.tar.gz

该命令备份所有的数据库,记录备份时binlog的位置(用于建立主从关系的复制起始点或是恢复到指定时间点),以事务的方式备份,不会影响主库运行。

备份如果是在本地磁盘,还需要定期清理备份文件,比如清理30天前的备份文件,如下清理脚本可以参考:

find /backup -mtime +30 -name "dbfull-*.sql" -exec rm -rf {} \;

随着蓝鲸平台在企业级的广泛使用,其存储数据的MySQL数据库应确保数据安全和MySQL服务平稳运行,本文所列举的几个问题都是常见的导致平台无法使用的问题,其处理方法也都是验证过并在生成环境使用的方式,可以作为处理该类问题的参考

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MySQL升级
  • MySQL配置
  • binlog手动清理维护
  • 表清空操作
  • MySQL备份
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档