任務調度計劃 php 定時完成數據庫的備份: ?1 、手動備份數據庫 (表)的方法: cmd 控制臺: mysqldump-uroot-p123 數據庫 (temp) 文件保存路徑 (d:\temp.bak) ;備份數據庫的某幾張表: mysqldump-uroot-p123 數據庫 [ 表名 1 ,表名 2..](tempdept) 文件
任務調度計劃
php定時完成數據庫的備份:
? 1、手動備份數據庫(表)的方法:cmd控制臺:mysqldump -u root -p123 數據庫(temp) >文件保存路徑(d:\temp.bak);備份數據庫的某幾張表:mysqldump -u root -p123 數據庫 [表名1,表名2..] (temp dept)>文件路徑(d:\temp.dept.bak)。
? 使用備份文件恢復數據:MySQL控制臺:source d:\temp.dept.bak(如果不成功,\可能需要轉義)
? 2、使用定時器自動完成。把備份數據庫的指令,寫入到bat文件,然后通過任務管理器去定時調用bat文件:創建mytask.bak文件,在文件中寫如下指令:”D:\wamp\bin\mysql\mysql5.6.12\bin\mysqldump” -u root -p123 temp dept >d:\temp.dept.bak(如果mysqldump.exe文件路徑有空格要用雙引號引起來)。在控制面板->系統和安全->計劃任務->創建基本任務。(缺點是每次都覆蓋原來的文件)
? 3、使用PHP調度。1、建立一個PHP文件(mytask.php):
d:\\$bakfilename”; exec($command); //執行命令 ?>
2、建立mytask2.bat文件,用于定時執行上面建立的PHP文件(php.exe可以再控制臺解析 php 文件:php.exe php文件路徑),mytask2.bat內容如下: D:\wamp\bin\php\php5.4.16\php.exe D:\wamp\www\mytask.php
? insert into dept select deptno,dname,loc from dept;主從復制。
? PHP完成定時發送郵件功能。
? 發送郵件有兩種方法:搭建自己的服務器、讓已有的服務器(如163的)代為轉發。
? 1、設計一張郵件表:
create table maillist
(id int unsigned primary key auto_increment,
getter varchar(64) not null default '',
sender varchar(64) not null default '',
title varchar(32) not null default '',
content varchar(2048) not null default '',
sendtime int unsigned not null default 0,
flag tinyint unsigned not null default 0
)engine=myisam charset utf8;
2、插入一些數據:
insert into maillist values
(null,'464839522@qq.com','hzn.itself@gmail.com','hello100','abc,hello100',unix_timestamp()+10*3600,0);
insert into maillist values
(null,'464839522@qq.com','hzn.itself@gmail.com','hello200','abc,hello200',unix_timestamp()+10*3600,0);
3、建立一個php文件(mytask.php):
更新數據庫成功'; } } } mysql_free_result($res); mysql_close($con); ?>
4、配置php.ini
[mail function]
; For Win32 only.
; http://php.com/smtp
SMTP = localhost
; http://php.com/smtp-port
smtp_port = 25
; For Win32 only.
; http://php.com/sendmail-from
sendmail_from = 464...522@qq.com //可以寫多個
表的分割技術
? 水平分割:
uuid表用于生成id。
addUser.php:
可以認為是qq號 $sql="insert into uuid values(null)"; if(mysql_query($sql,$con)){ $uuid=mysql_insert_id(); $tablename='qqlogin'.$uuid%3; //3張表 $sql="insert into ".$tablename." values('$uuid','aaa','aaa')"; if(mysql_query($sql,$con)){ echo '添加用戶成功'; } }else{ die('添加失敗'); } mysql_close($con); ?>
checkUser.php:
在'.$tablename.'表中存在這個用戶'.$row['name']; }else{ die('沒有用戶'); } mysql_free_result($res); mysql_close($con); ?>
? 我們在提供檢索時,應該根據業務的需求,找到分表的標準,并在檢索頁面,約束用戶用戶檢索方式-》分頁,如果有大表檢索的需求,也是少數的。
? 表的垂直分割:
某個表的某些字段,在查詢時,并不是經常使用,但是數據量很大,建議把這些字段單獨放到另一張表。
? 修改my.ini:端口號port=3306、最大連接數(并發數)max_connections=1000、
? tinyint(1)括號里的數據表示零填充:
create table test(id1 tinyint(2) zerofill,id2 tinyint(3) zerofill);
insert into test values(2,3);
? 增量備份:mysql數據庫會議二進制的形式,把用戶對mysql的操作,記錄到文件中。
? 增量備份會記錄(dml語句,創建表的語句,不會記錄select);記錄的是:操作語句本身、操作的時間、操作的位置。
? 如何啟用增量備份:(1)配置mysql.ini文件或my.cof,啟用二進制備份log-bin=mysql-bin(存放路徑)(默認把文件存放在data目錄下);(2)啟動mysql得到文件:
mysql-bin.index 索引文件,有哪些增量備份文件
mysql-bin.000001 存放用戶對數據庫操作的文件
(3)可以使用mysql/bin/mysqlbinlog程序查看備份文件。cmd: mysqlbinlog 備份文件路徑
? 可以通過位置或時間恢復
時間點:stop 表示從開始恢復到該時間點的操作,start表示從該時間點恢復到最后的操作;
恢復時間段:mysqlbinlog --start-datetime=”2013-01-14 18:20:21” --stop-datetime=”2013-01-14 18:40:35”
恢復位置段:mysqlbinlog --start-postion=”110” --stop-postion=”230”
? reset master:清理二進制日志;expire_logs_days=過期天數,設置到了過期時間自動清理的功能,my.ini中添加
? 如何在工作中將全備份和增量備份配合使用:每周做一個全備份:mysqldump,啟用增量備份(把過期時間設為大于或等于7的天數)。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com