蓝鲸平台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服务平稳运行,本文所列举的几个问题都是常见的导致平台无法使用的问题,其处理方法也都是验证过并在生成环境使用的方式,可以作为处理该类问题的参考。

蓝鲸平台MySQL数据库管理规范建议相关推荐

  1. mysql++编程规范_建议收藏 - 专业的MySQL开发规范

    为了项目的稳定,代码的高效,管理的便捷,在开发团队内部会制定各种各样的规范 这里分享一份我们定义的MySQL开发规范,欢迎交流拍砖 数据库对象命名规范 数据库对象 命名规范的对象是指数据库SCHEMA ...

  2. 发现一个好用的MySQL数据库管理工具

    免费在线MySQL数据库管理工具 平台地址: http://open.yesapi.cn/ 一.管理自己的MySQL数据库 如果自己已经有一个MySQL数据库,那么可以直接配置到小白开放平台,就可以实 ...

  3. mysql pk uk ak,最重要的MySQL开发规范 全都在这了

    今天,腾讯云学院来分享一篇技术文章--有关MySQL的开发规范.文章开始之前,先给大家派送一个超级福利! 腾讯云学院邀请到本文作者--"知数堂"培训联合创始人.知名MySQL专家叶 ...

  4. MYSQL 研发规范

    MYSQL 研发规范 表设计规范: 1)  所有数据库表,函数,视图等对象都定义为小写,字符之间用下划线连接 2)  库名.表名.字段名禁止使用MySQL保留字,且名称长度不能超过32字节 3)  默 ...

  5. 关于一款多平台的数据库管理工具

    一.概要 作为运维,经常要跟数据库打交道,我们常用的数据工具除了一些开发插件,标准接口,专用的数据库客户端,可能最常用的就是Navicat工具了吧:今天咱们这里介绍一款跨多平台的数据库管理工具,即:D ...

  6. Windows客户端C/C++编程规范“建议”——前言

    前言 工作中接触了很多编程规范.其中最有意思的是,公司最近发布了一版C/C++编程规范,然后我看到该规范的最后一段时,有这么一句:"该规范不适用于Windows平台开发".看来这份 ...

  7. MySQL 数据库规范--调优篇(终结篇)

    前言 这篇是MySQL 数据库规范的最后一篇--调优篇,旨在提供我们发现系统性能变弱.MySQL系统参数调优,SQL脚本出现问题的精准定位与调优方法. 目录 1.MySQL 调优金字塔理论 2.MyS ...

  8. linux平台及windows平台mysql重启方法

    linux平台及windows平台mysql重启方法 Linux下重启MySQL的正确方法: 1.通过rpm包安装的MySQL service mysqld restart 2.从源码包安装的MySQ ...

  9. 一份完整的 MySQL 开发规范,进大厂必看!

    一份完整的 MySQL 开发规范,进大厂必看! 作者:听风 https://www.cnblogs.com/huchong/p/10219318.html 一.数据库命令规范 1.所有数据库对象名称必 ...

最新文章

  1. EF 调试跟踪生成的SQL语句
  2. 剑指Offer系列 重建二叉树
  3. JS中怎样获取当前日期的前一个月和后一个月的日期字符串
  4. Android使用ConstraintLayout 加载RecyclerView数据显示不全
  5. MSB8036 The Windows SDK version 10.0 was not found. Install the required version of Windows SDK o
  6. 小程序同时设置点击跳转与自动跳转导致重复跳转的问题及解决
  7. 如何在redhat8里使用gcc命令_如何使用who命令检查用户登录信息
  8. 嵌入式仿真平台SkyEye的覆盖率分析
  9. 【Python】Sklearn线性回归模型预测波士顿房价并绘图
  10. java dump分析工具_Java虚拟机详解(七)------虚拟机监控和分析工具(1)
  11. windows文件(.txt,.h,.cpp等等)中的中文在ubuntu下乱码的解决方法
  12. 可串联使用的模10计数器
  13. C语言,利用条件语句进行身高预测
  14. 【Pygame小游戏】这款“打地鼠”小游戏要火了(来来来)
  15. 计算机多媒体培训总结,多媒体培训心得体会
  16. 如何去掉XP系统中文件夹的只读属性
  17. Android进阶必备:滑动冲突解决与事件分发机制(附视频讲解)这篇看完还不懂请寄刀片
  18. 拜托,有一个python画的生日蛋糕超酷的好吧~
  19. 机械硬盘——数据修复
  20. 计算机科学与技术专业考博课程,北京大学考博计算机科学与技术专业介绍,考博真题,真题解析.pdf...

热门文章

  1. html 弹框字体模糊,html - Chrome中的字体太模糊了 - 我该如何解决这个问题? - 堆栈内存溢出...
  2. canvas绘制简单动画思路总结
  3. virbox protector 为软件设置有效期_苹果IPA文件签名,软件掉签问题,自己也能轻松解决...
  4. c加加语言三体问题,一道典型三体问题的四种别致解法
  5. React入门看这篇就够了《转载,侵删》
  6. 求两个字符串的LCS(最长公共子串)后缀数组
  7. jQuery遍历页面中的标签
  8. JavaScript计算字符串长度(含中文)
  9. Baeldung Java 周评 | 第一百零五弹(关键词:如果 Java 是今天设计的、内容丰富的 Spring 会议、JPA 测试用例模版、高性能 Java 持久化、自动化订购午餐、前端五强)
  10. 经典排序算法(五) —— Merge Sort 归并排序