欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

企业之Mysql备份恢复

程序员文章站 2024-02-02 20:05:22
...

为什么要备份:备份的几个重要理由:灾难恢复、需求改变、审计、测试等;如测试定期用最新的生产环境中的数据更新到测试环境服务器需要考虑的问题:1、在不导致严

7、对于安全性要考虑周全,如果有人能接触到生产服务器,他是否能访问备份服务器

使用Mysqldump备份工具实现完全备份,并结合二进制日志实现增量备份

特点:逻辑备份工具、支持InnoDB热备份、MyISAM温备份;备份与恢复较慢

使用LVM逻辑卷快照功能实现几乎热血备份的完全备份,并结合二进制日志实现增量备份;简单介绍"mylvmbackup"一键备份工具的使用

特点:几乎接近于热备份、物理备份、备份与恢复较快

使用Xtrabackup备份工具实现完全备份与增量备份

特点:物理备份工具、支持InnoDB热备份、MyISAM温备份、速度较快

一、环境准备

1、安装Mysql数据库服务器

######安装编译环境 [root@localhost ~]# yum -y groupinstall "Server Platform Development" "Development tools" ######安装编译工具 [root@localhost ~]# yum install -y cmake ######创建Mysql用户 [root@localhost ~]# useradd -r mysql ######解压并安装Mysql [root@localhost ~]# tar xf mysql-5.5.33.tar.gz [root@localhost ~]# cd mysql-5.5.33 [root@localhost mysql-5.5.33]# cmake . \ > -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #安装路径 > -DMYSQL_DATADIR=/mydata/data \ #数据存放路径 > -DSYSCONFDIR=/etc \ #主配置文件目录 > -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #下面三项启用支持的存储引擎 > -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ > -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ > -DWITH_READLINE=1 \ #支持readline库 > -DWITH_SSL=system \ #支持SSL加密 > -DWITH_ZLIB=system \ #支持ZLIB压缩 > -DWITH_LIBWRAP=0 \ #支持Libwrap库 > -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ #Sock文件路径 > -DDEFAULT_CHARSET=utf8 \ #默认字符集 > -DDEFAULT_COLLATION=utf8_general_ci #默认字符集排序规则 ######编译并安装 [root@localhost mysql-5.5.33]# make && make install 注释: 如果想清理此前的编译所生成的文件,则需要使用如下命令 make clean rm CMakeCache.txt

2、为Mysql提供主配置文件与Sysv服务脚本

######为Mysql提供主配置文件 [root@localhost mysql-5.5.33]# cp support-files/my-large.cnf /etc/my.cnf ######为Mysql提供Sysv服务脚本 [root@localhost mysql-5.5.33]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld ######赋于Sysv脚本执行权限 [root@localhost mysql-5.5.33]# chmod +x /etc/rc.d/init.d/mysqld ######将Mysqld加入系统服务 [root@localhost mysql-5.5.33]# chkconfig --add mysqld [root@localhost mysql-5.5.33]# chkconfig mysqld on

3、让系统识别源码包安装的软件

[root@localhost mysql]# echo "PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile [root@localhost mysql]# . /etc/profile [root@localhost mysql]# ln -s /usr/local/mysql/include /usr/include/mysql [root@localhost ~]# echo "/usr/local/mysql/lib" >> /etc/ld.so.conf [root@localhost ~]# ldconfig

4、修改Mysql主配置文件

[root@localhost mysql]# vim /etc/my.cnf datadir = /mydata/data #添加此行,数据存放目录 innodb_file_per_table = 1 #启用InnoDB表每表一个文件,,默认所有数据库使用一个表空间 log-bin=/binlog/mysql-bin #修改二制作存放目录5、为Mysql创建数据与二投井

5、为Mysql创建数据库与二进制存放目录

######创建数据、二进制存放目录与备份目录 [root@localhost ~]# mkdir -p /backup /mydata/data /binlog ######修改Mysql二进制与数据及备份目录的属主、属组为Mysql用户 [root@localhost mysql]# chown -R mysql.mysql /mydata/data [root@localhost mysql]# chown -R mysql.mysql /binlog /backup ######修改Mysql安装目录的属组为Mysql组 [root@localhost mysql]# chown -R :mysql *

6、初始化Mysql并启动服务

[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/mydata/data [root@localhost ~]# service mysqld start Starting MySQL......... SUCCESS! ######修改Mysql的root用户密码 [root@localhost ~]# mysqladmin -uroot password 'root@pass'

7、创建测试数据库与表并插入数据

[root@localhost ~]# mysql -uroot -proot@pass mysql> create database allen; mysql> use allen; mysql> create table tab1 (ID tinyint unsigned not null primary key auto_increment,Name char(20) not null unique key,Age tinyint unsigned,Gender char(1) default 'M'); mysql> insert into tab1 (Name,Age,Gender) values ('Zhang WuJi',26,'M'),('Zhao Min',24,'F');

二、使用Mysqldump备份工具备份

1、使用Mysqldump对"allen"数据库做备份并且滚动二进制日志,记录日志位置

[root@localhost ~]# mysqldump -uroot -proot@pass --lock-all-tables --routines --events --triggers --master-data=2 --flush-logs --databases allen > /backup/allen_`date +%F`.sql 注释: -u #指定用户名 -p #指定用户密码 -h #指定主机地址 -A|--all-databases #备份所有数据库 --databases #备份指定数据库 --single-transcation #基于此项可以实现对InnoDB表做热备份,但不需要使用 --lock-all-tables #执行备份时为所有表请求加锁 -E|--events #备份事件调度器代码 --opt #同时启动各种高级选项 -R|--routines #备份存储过程和存储函数 --flush-logs #备份之前刷新日志 --triggers #备份触发器 --master-data=2 #该选项将会记录binlog的日志位置与文件名并追加到文件中,如果为1将会输出CHANGE MASTER命令,主从下有用 ######更多选项请参考man手册