mysql儲存過程以及日誌和資料恢復

2021-08-31 21:23:52 字數 3836 閱讀 6539

mysql儲存過程是一組為了完成特定功能的sql語句集,經過編譯之後儲存在資料庫中,

當需要使用該組sql語句時使用者只需要通過指定儲存過程的名字並給定引數就可以呼叫執行它了

簡而言之就是一組已經寫好的命令,需要使用的時候拿出來用就可以了。

\d //(修改語句結束符號)

create procedure p1()

begin

set @i=0;

while @i<10 do

insert into user values(null,concat('user',@i),@i,concat('user',@i,'@qq.com'),1,99);

set @i=@i+1;

end while;

end;

//

執行儲存:call p1 檢視儲存具體資訊:show create procedure p1\g 刪除觸發器: drop procedure p1;

1,使用vim或其它編輯器 開啟 mysql 配置檔案

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

2,找到 以下兩個配置項

server-id = 123456

log_bin = /var/log/mysql/mysql-bin

3,把注釋開啟 改完後 儲存推出

4,重啟mysql

sudo service mysql restart

5,檢視bin-log日誌:

mysql>show binary logs;

6,ls 檢視是否存在mysql日誌檔案

cd /var/lib/mysql

mysql>reset master;

7,清空所有的bin-log日誌

8,-- 檢視binlog日誌檔案

mysqlbinlog mysql-bin.000001

備份資料時 重新整理日誌:

mysqldump -uroot -pwei test -l -f '/tmp/test.sql'

其中:-f即flush logs,可以重新生成新的日誌檔案,當然包括log-bin日誌

前提是開啟了bin-log日誌,並定期備份

思路:

1,通過定期備份的檔案恢復大量資料

2,通過日誌恢復備份後的資料操作

-- 重新整理 日誌

mysql> reset master;

query ok, 0 rows affected (0.39 sec)

-- 查詢最新日誌

show binary logs;

-- 建立資料庫

mysql> create database ops;

query ok, 1 row affected (0.28 sec)

-- 選擇並開啟庫

mysql> use ops;

database changed

-- 建立表

create table user(

id int not null auto_increment,

name char(20) not null,

age int not null,

primary key(id)

)engine=innodb;

-- 新增資料

insert into user values(1,"wangbo","24"),(2,"guohui","22"),(3,"zhangheng","27");

-- 查詢

mysql> select * from user;

+----+-----------+-----+

| id | name | age |

+----+-----------+-----+

| 1 | wangbo | 24 |

| 2 | guohui | 22 |

| 3 | zhangheng | 27 |

+----+-----------+-----+

3 rows in set (0.00 sec)

-- 現在進行資料備份

mysqldump -uroot -p -b -f -r -x --master-data=2 ops >/home/yc/py08/04-mysql/ops.sql

-----------------

引數說明:

-b:指定資料庫

-f:重新整理日誌

-r:備份儲存過程等

-x:鎖表

--master-data:在備份語句裡新增change master語句以及binlog檔案及位置點資訊

-- 再新增新的資料

insert into user values(4,"liupeng","21"),(5,"xiaoda","31"),(6,"fuaiai","26");

-- 查詢資料

mysql> select * from user;

+----+-----------+-----+

| id | name | age |

+----+-----------+-----+

| 1 | wangbo | 24 |

| 2 | guohui | 22 |

| 3 | zhangheng | 27 |

| 4 | liupeng | 21 |

| 5 | xiaoda | 31 |

| 6 | fuaiai | 26 |

+----+-----------+-----+

6 rows in set (0.00 sec)

-- 此時誤操作,刪除了test資料庫

drop database ops;

mysql> show databases;

+--------------------+

| database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| python4 |

| sys |

| wx |

+--------------------+

6 rows in set (0.00 sec)

1,先講binlog檔案匯出

-- 將binlog檔案匯出sql檔案,並vim編輯它刪除其中的drop語句

-- [root@vm-002 backup]# mysqlbinlog -d ops /var/lib/mysql/mysql-bin.000002> /home/yc/002bin.sql

sudo mysqlbinlog -d ops /var/log/mysql/mysql-bin.000002> /home/yc/py08/04-mysql/002bin.sql

2,-- 刪除裡面的drop語句

vim 002bin.sql

3,-- 匯入備份的資料檔案,

mysql -uroot -p < /home/yc/py08/04-mysql/ops.sql

4,-- 再匯入刪除 drop語句後的 binlog日誌檔案

mysql -uroot -p ops < /home/yc/py08/04-mysql/002bin.sql

mysql儲存過程 MySQL儲存過程

在本節中,您將逐步學習如何在mysql中編寫和開發儲存過程。首先,我們向您介紹儲存過程的概念,並討論何時使用它。然後,展示如何使用過程 的基本元素,如建立儲存過程的語句,if else,case,loop,儲存過程的引數。下面每個教程都包含了易於理解的示例和詳細的說明。如果您瀏覽並學習所有教程,您可...

mysql 儲存過程 mysql 儲存過程

建立 為建立儲存過程的結束標誌,使用delimiter 可更改標誌 格式create procedure begin sqlend create procedure myprocedure in param integer begin select from tb role where tb rol...

mysql 儲存過程 MySQL儲存過程

目錄 儲存過程 簡介是一組為了完成特定功能的sql語句集合 比傳統sql速度更快 執行效率更高 儲存過程的優點 執行一次後,會將生成的二進位制 駐留緩衝區,提高執行效率 sql語句加上控制語句的集合,靈活性高 在伺服器端儲存,客戶端呼叫時,降低網路負載 可多次重複被呼叫,可隨時修改,不影響客戶端呼叫...