当前位置:七道奇文章资讯数据防范MySQL防范
日期:2011-05-02 15:44:00  来源:本站整理

MySQL服务保护笔记(上)[MySQL防范]

赞助商链接



  本文“MySQL服务保护笔记(上)[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
以下就是针对MySQL作为专门的数据库服务器的优化倡议:







MySQL服务器的筹划

为了今后保护,进级备份的便利和数据的安全性,最好将MySQL程序文件和数据辨别安装在"差别的硬件"上.

         /   / 
| /usr <== 操作系统
| /home/mysql <== mysql主目录,为了便利进级,这只
硬盘1==>| 是一个最新版本目录的链接
| /home/mysql-3.23.54/ <== 最新版本的mysql /home/mysql链接到这里
\ /home/mysql-old/ <== 从前运行的旧版本的mysql

/ /data/app_1/ <== 利用数据和启动脚本等
硬盘2==>| /data/app_2/
\ /data/app_3/


MySQL服务的安装和服务的启动

MySQL普通利用当前STABLE的版本:

尽大概不利用--with-charset=选项,我感受with-charset只在按字母排序的时刻才有效,这些选项会对数据的迁移带来很多麻烦.

尽大概不利用innodb,innodb主要用于需求外键,事件等企业级支持,代价是速度比MYISAM有数目级的下降.

./configure --prefix=/home/mysql --without-innodb
make
make install

服务的启动和终止

1 复制缺省的mysql/var/mysql到 /data/app_1/目录下.

2 MySQLD的启动脚本:start_mysql.sh

#!/bin/sh
rundir=`dirname "$0"`
echo "$rundir"
/home/mysql/bin/safe_mysqld --user=mysql --pid-file=
"$rundir"/mysql.pid --datadir="$rundir"/var "$@"\-O 
max_connections=500 -O wait_timeout=600 -O key_buffer=
32M --port=3402 --socket="$rundir"/mysql.sock &


注释:

--pid-file="$rundir"/mysql.pid --socket="$rundir"/mysql.sock --datadir="$rundir"/var

目的都是将呼应数据和利用暂时文件放在一同;
-O 背面普通是服务器启动全局变量优化参数,有时刻需求按照具体利用调整;
--port: 差别的利用利用PORT参数分布到差别的服务上去,一个服务可以供应的衔接数普通是MySQL服务的主要瓶颈;

改正差别的服务到差别的端口后,在rc.local文件中加入:

/data/app_1/start_mysql.sh
/data/app_2/start_mysql.sh
/data/app_3/start_mysql.sh

注意:必须写全途径

3 MySQLD的终止脚本:stop_mysql.sh

#!/bin/sh
rundir=`dirname "$0"`
echo "$rundir"
/home/mysql/bin/mysqladmin -u mysql -S"$rundir"/mysql.sock shutdown


利用这个脚本的好处在于:

1 多个服务启动:关于差别服务只需求改正脚本中的--port[=端口号]参数.单个目录下的数据和服务脚本都是可以独立打包的.
2 全部服务呼应文件都位于/data/app_1/目录下:比方:mysql.pid mysql.sock,当一台服务器上启动多个服务时,多个服务不会彼此影响.但都放到缺省的/tmp/下则有大概被其他利用误删.
3 当硬盘1出问题今后,直接将硬盘2放到一台装好MySQL的服务器上便可以立即恢复服务(假如放到my.cnf里则还需求备份呼应的配置文件).

服务启动后/data/app_1/下呼应的文件和目录分布以下:

/data/app_1/
    start_mysql.sh 服务启动脚本
    stop_mysql.sh 服务终止脚本
    mysql.pid 服务的进程ID
    mysql.sock 服务的SOCK
    var/ 数据区
       mysql/ 用户库
       app_1_db_1/ 利用库
       app_1_db_2/
...
/data/app_2/
...


查看全部的利用进程ID:
cat /data/*/mysql.pid

查看全部数据库的错误日记:
cat /data/*/var/*.err

个人倡议:MySQL的主要瓶颈在PORT的衔接数上,因此,将表构造优化好今后,呼应单个MySQL服务的CPU占用仍旧在10%以上,就要考虑将服务拆分到多个PORT上运行了.

服务的备份

尽大概利用MySQL DUMP而不是直接备份数据文件,以下是一个按weekday将数据轮循备份的脚本:备份的隔断和周期可以按照备份的需求肯定

/home/mysql/bin/mysqldump -S/data/app_1/mysql.sock -umysql db_name | gzip -f>/path/to/backup/db_name.`data +%w`.dump.gz

因此写在CRONTAB中普通是:

15 4 * * * /home/mysql/bin/mysqldump -S/data/app_1/mysql.sock -umysql db_name | gzip -f>/path/to/backup/db_name.`data +\%w`.dump.gz

注意:

1 在crontab中'%'需求转义成'\%'
2 按照日记统计,利用负载最低的时刻普通是在早上4-6点

先备份在本地然后传到远程的备份服务器上,大概直接成立一个数据库备份帐号,直接在远程的服务器上备份,远程备份只需求将以上脚本中的-S /path/to/msyql.sock改成-h IP.ADDRESS便可.

数据的恢复和系统的进级

平常保护和数据迁移:在数据盘没有被破坏的情形下,硬盘普通是系统中寿命最低的硬件.而系统(包含操作系统和MySQL利用)的进级和硬件进级,城市碰到数据迁移的问题.
只要数据不变,先装好服务器,然后直接将数据盘(硬盘2)安装上,只需求将启动脚本重新加入到rc.local文件中,系统就算是很好的恢复了.

灾难恢复:数据库数据本身被破坏的情形下,肯定破坏的时间点,然后从备份数据中恢复.

  以上是“MySQL服务保护笔记(上)[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Windows 搭配 IIS7 PHP MySQL 环境
  • mysql Out of memory (Needed 16777224 bytes)的错误办理
  • mysql提醒[Warning] Invalid (old?) table or database name问题的办理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • MySQL Order By语法介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • mysql数据库插入速度和读取速度的调整记录
  • MySQL Order By索引优化办法
  • MySQL Order By用法分享
  • mysql #1062 –Duplicate entry ''1'' for key ''PRIMARY''
  • MySQL Order By Rand()效率解析
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .