mysql hex2bin_mysqlbinlog指令
binlog是通過記錄二進制文件方式來備份數據,然后在從二進制文件將數據恢復到某一時段或某一操作點。
1、使用mysqlbinlog工具來恢復
Mysqlbinlog日志如何開啟?
在my.cnf這個文件中加一行。
#vi /etc/my.cnf
[mysqld]
log-bin=mysqlbin-log #添加這一行就可以了,=號后面自己定義日志文件名,默認該文件是存儲在datadir中。
mysqlbinlog用法詳細說明
服務器生成的二進制日志文件寫成二進制格式。要想檢查這些文本格式的文件,應使用mysqlbinlog實用工具。
#mysqlbinlog [options] log-files...
例如,要想顯示二進制日志mysql-bin.407的內容,使用下面的命令:
#mysqlbinlog mysql-bin.407
輸出包括在mysql-bin.407中包含的所有語句,以及其它信息例如每個語句花費的時間、客戶發出的線程ID、發出線程時的時間戳等等。
參數說明(mysql5以上版本參數添加了很多):
mysqlbinlog支持下面的選項:
---help,-???? 顯示幫助消息并退出。
---database=db_name,-d db_name???? 只列出該數據庫的條目(只用本地日志)。
--force-read,-f???? 使用該選項,如果mysqlbinlog讀它不能識別的二進制日志事件,它會打印警告,忽略該事件并繼續。沒有該選項,如果mysqlbinlog讀到此類事件則停止。
--hexdump,-H??? 在注釋中顯示日志的十六進制轉儲。該輸出可以幫助復制過程中的調試。在MySQL 5.1.2中添加了該選項。
--host=host_name,-h host_name??? 獲取給定主機上的MySQL服務器的二進制日志。
--local-load=path,-l pat??? 為指定目錄中的LOAD DATA INFILE預處理本地臨時文件。
--offset=N,-o N???? 跳過前N個條目。
--password[=password],-p[password]??? 當連接服務器時使用的密碼。如果使用短選項形式(-p),選項和 密碼之間不能有空格。如果在命令行中--password或-p選項后面沒有 密碼值,則提示輸入一個密碼。
--port=port_num,-P port_num??? 用于連接遠程服務器的TCP/IP端口號。
--position=N,-j N??? 不贊成使用,應使用--start-position。
--protocol={TCP | SOCKET | PIPE | -position??? 使用的連接協議。
--read-from-remote-server,-R??? 從MySQL服務器讀二進制日志。如果未給出該選項,任何連接參數選項將被忽略。這些選項是--host、--password、--port、--protocol、--socket和--user。
--result-file=name, -r name??? 將輸出指向給定的文件。
--short-form,-s??? 只顯示日志中包含的語句,不顯示其它信息。
--socket=path,-S path??? 用于連接的套接字文件。
--start-datetime=datetime??? 從二進制日志中第1個日期時間等于或晚于datetime參量的事件開始讀取。datetime值相對于運行mysqlbinlog的機器上的本地時區。該值格式應符合DATETIME或TIMESTAMP數據類型。
--stop-datetime=datetime??? 從二進制日志中第1個日期時間等于或晚于datetime參量的事件起停止讀。關于datetime值的描述參見--start-datetime選項。該選項可以幫助及時恢復。
--start-position=N??? 從二進制日志中第1個位置等于N參量時的事件開始讀。
--stop-position=N??? 從二進制日志中第1個位置等于和大于N參量時的事件起停止讀。
--to-last-logs,-t??? 在MySQL服務器中請求的二進制日志的結尾處不停止,而是繼續打印直到最后一個二進制日志的結尾。如果將輸出發送給同一臺MySQL服務器,會導致無限循環。該選項要求--read-from-remote-server。
--disable-logs-bin,-D??? 禁用二進制日志。如果使用--to-last-logs選項將輸出發送給同一臺MySQL服務器,可以避免無限循環。該選項在崩潰恢復時也很有用,可以避免復制已經記錄的語句。注釋:該選項要求有SUPER權限。
--user=user_name,-u user_name??? 連接遠程服務器時使用的MySQL用戶名。
--version,-V?? 顯示版本信息并退出。
還可以使用--var_name=value選項設置下面的變量:
Variables (--variable-name=value)
and boolean options {FALSE|TRUE}? Value (after reading options)
--------------------------------- -----------------------------
base64-output???????????????????? (No default value)
character-sets-dir??????????????? (No default value)
database????????????????????????? (No default value)
debug-check?????????????????????? FALSE
debug-info??????????????????????? FALSE
disable-log-bin?????????????????? FALSE
force-if-open???????????????????? TRUE
force-read??????????????????????? FALSE
hexdump?????????????????????????? FALSE
host????????????????????????????? (No default value)
local-load??????????????????????? (No default value)
offset??????????????????????????? 0
port????????????????????????????? 3306
position????????????????????????? 4
read-from-remote-server?????????? FALSE
server-id???????????????????????? 0
set-charset?????????????????????? (No default value)
short-form??????????????????????? FALSE
socket??????????????????????????? /tmp/mysql.sock
start-datetime??????????????????? (No default value)
start-position??????????????????? 4
stop-datetime???????????????????? (No default value)
stop-position???????????????????? 18446744073709551615
to-last-log?????????????????????? FALSE
user????????????????????????????? (No default value)
open_files_limit????????????????? 64
例子:
查看日志
#mysqlbinlog mysql-bin.407
根據position從20-2000查找resource庫相關記錄,并輸出到指定文件:
#mysqlbinlog --start-position="20" --stop-position="2000" --database=resource mysql-bin.407 --result-file=result.sql
查找并導入數據庫:
#mysqlbinlog --start-position="20" --stop-position="2000" --database=resource mysql-bin.407 | mysql -u root
還可以根據時間來查找記錄:
#mysqlbinlog --start-datetime="2012-09-20 8:10:00" --stop-datetim="2012-09-25 07:30:00" mysql-bin.407 --result-file=result.sql
……
2、Mysqlbinlog導出并轉換編碼導入
原中文編碼為gb2312,轉換utf8編碼,并插入
(1)從position=387426452開始導出resource數據庫信息
#/usr/local/mysql/bin/mysqlbinlog --position=387426452 --set-charset=utf8 --database=resource mysql-bin.407 --result-file=result_resource.sql
(2)轉換編碼為utf8
#iconv -t utf-8 -f gb2312 -c result_resource.sql > new_result_resource.sql_utf8.sql
(3)導入數據庫
在mysql會話中需要set names utf8;
mysql> set names utf8;
mysql> source /tmp/new_result_resource.sql_utf8.sql
總結
以上是生活随笔為你收集整理的mysql hex2bin_mysqlbinlog指令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字节跳动简历冷却期_【字节跳动招聘】简历
- 下一篇: curd日志记录php,ThinkPHP