扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1.my.ini配置中就有的,去掉好像是log-bin这样的一行就可以有日志了。
成都创新互联2013年至今,是专业互联网技术服务公司,拥有项目网站设计、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元龙凤做网站,已为上家服务,为龙凤各地企业和个人服务,联系电话:028-86922220
2.二进制我的应用中做过一些cluster,记录的就是一些SQL信息,所以如果有重建数据库的SQL语句在内就肯定是支持的。
3.与2 同,记录二进行就是一些执行的sql语句就知道答案了。
mysql二进制日志文件用来记录所有用户对数据库操作,即记录用户对数据库操作的sql语句。如果有此文件,当数据库发生意外时,可以通过此文件查看到用户在此文件记录的时间段内用户所做的操作,再和数据库备份配合使用,即可再现用户操作,使数据库恢复。
小量的数据库我们可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,我们就不太可能每天进行一次完整备份了,而且改成每周一次完整备份,每天一次增量备份类似这样的备份策略。增量备份的原理就是使用了mysql的二进制日志,所以我们必须启用二进制日志功能。
一、增量备份
1、比如我们在星期天下午11点做一次完整备份:
mysqldump
--single-transaction
--flush-logs
--master-data=2
--all-databases
fullbackup_sunday_11_PM.sql
在sql文件中我们会看到两行:
–
Position
to
start
replication
or
point-in-time
recovery
from
–
CHANGE
MASTER
TO
MASTER_LOG_FILE=’bin-log.000002′,
MASTER_LOG_POS=107;
第二行包含了我们需要的信息,是指备份后所有的更改将会保存到bin-log.000002二进制文件中。
2、然后在星期一下午11点我们来做一次增量备份:
mysqladmin
flush-logs
这时将会产生一个新的二进制日志文件bin-log.000003,bin-log.000002则保存了自星期天下午11点到现在的所有更改,我们只需要把这个文件备份到安全的地方就行了。然后星期二我们又做增量备份,还是执行同样的命令,这时我们保存bin-log.000003文件。
二、恢复备份
比如星期三中午12点出现了故障,这时需要恢复,我们首先导入星期天的完整备份:
mysql
fullbackup_sunday_3_AM.sql
接着我们导入星期一和星期二的增量备份:
mysqlbinlog
bin-log.000002
bin-log.000003
mysql
这时我们已经恢复了所有备份数据,我们还可以找到bin-log.000004,进一步恢复最新的数据。
以PHP脚本为例。PHP一般只支持小于2M的文件,假如要存取大于2M的文件,那就要进系统方面的设置了。具体操作如下:
首先创建测试表testtable
CREATE TABLE testtable ( id INT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY,filename CHAR(255),data LONGBLOB );
将文件存入表中使用如下PHP代码
?php
mysql_connect( "localhost", "root", "password"); //连接数据库
mysql_select_db( "database"); //选定数据库
$filename="" //这里填入二进制文件名
$data = addslashes(fread(fopen($filename, "r"), filesize($filename)));//打开文件并规范化数据存入变量$data中
$result=mysql_query( "INSERT INTO testtable (filename,data) VALUES ('$filename','$data')");//数据插入到数据库test表中
mysql_close();
?
从表中取回文件,使用如下PHP代码
?php
if($id) {
mysql_connect( "localhost", "root", "password");
mysql_select_db( "database");
$filename="" //这里填入二进制文件名
$query = "select data from testtable where filename=$filename";
$result = mysql_query($query);
$data = mysql_result($result,0, "data");
?
1、到mysql官网下载mysql编译好的二进制安装包,在下载页面Select Platform:选项选择linux-generic,然后把页面拉到底部,
64位系统下载Linux - Generic (glibc 2.5) (x86, 64-bit),32位系统下载Linux - Generic (glibc 2.5) (x86, 32-bit)
2、解压32位安装包:
进入安装包所在目录,执行命令:tar mysql-5.6.17-linux-glibc2.5-i686.tar.gz
3、复制解压后的mysql目录到系统的本地软件目录:
执行命令:cp mysql-5.6.17-linux-glibc2.5-i686 /usr/local/mysql -r
4、添加系统mysql组和mysql用户:
执行命令:groupadd mysql和useradd -r -g mysql mysql
5、安装数据库:
进入安装mysql软件目录:执行命令 cd /usr/local/mysql
修改当前目录拥有者为mysql用户:执行命令?chown -R mysql:mysql ./
安装数据库:执行命令?./scripts/mysql_install_db --user=mysql
修改当前目录拥有者为root用户:执行命令?chown -R root:root ./
修改当前data目录拥有者为mysql用户:执行命令?chown -R mysql:mysql data
到此数据库安装完毕
6、启动mysql服务和添加开机启动mysql服务:
添加开机启动:执行命令cp support-files/mysql.server /etc/init.d/mysql,把启动脚本放到开机初始化目录
启动mysql服务:执行命令service mysql start
执行命令:ps -ef|grep mysql 看到mysql服务说明启动成功
7、修改mysql的root用户密码,root初始密码为空的:
执行命令:./bin/mysqladmin -u root password '密码'
8、把mysql客户端放到默认路径:
ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql
注意:建议使用软链过去,不要直接包文件复制,便于系统安装多个版本的mysql
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流