Ⅰ 怎樣用命令行把MySQL資料庫遷移到另一台linux伺服器
1、用mp命令備份資料庫。
# mysqlmp -u root -p dbfile > dbfile.sql
2、用rsync從新伺服器獲得備份的文件(SCP或WGET也可以)。
# rsync -avr root@myolddbserver:/home/mympfolder/dbfile.sql
3、登陸新伺服器的mysql客戶端。
# mysql -u root -p
4. 建立資料庫。
mysql> create database dbfile;
5. 選擇新資料庫;
mysql> use dbfile;
6. 載入數據;
mysql> source dbfile.sql
或者
在Mysql程序中有我自己的一個資料庫共5張表,里邊數據不算太多。我現在想把他們全部弄到另一台電腦中去,該怎麼弄,如果不用其它的軟體工具,只用Mysql自已的程序不知可否?
註:不用考慮操作系統。
---------------------------------------------------------------
在dos命令提示符下使用mysqlmp命令進行備份.
如下:
C:\Documents and Settings\Administrator>mysqlmp yinshi >c:\\backup.txt -uroot
-p12142022
說明:yinshi是我的資料庫名,裡面有5張表; c:\\backup.txt 是我備份出來文件名和路徑;
-u,-p參數後面跟的分別是用戶名和密碼.
將你備份出來的文件我這里是backup.txt拷貝到另一台機上,再在dos命令提示符下用mysql命令,進行恢復,如下:
C:\Documents and Settings\Administrator>mysql < c:\\backup.txt -uroot -p12142022
or
mysql>source backup.txt;(這里backup.txt在放在data目錄下)
---------------------------------------------------------------
如果另一台機器上也安裝了mysql,可以直接導入
C:\mysql\bin>mysqlmp -h172.20.6.250 -udeveloper -p123456 --opt server_databasename | mysql -hlocalhost -uroot -C obj_databasename
172.20.6.250源伺服器ip
developer源伺服器連接用戶名
---------------------------------------------------------------
有兩種辦法。
1、在B機器上裝mysql。
將A機器上的mysql/data下的你的資料庫目錄整個拷貝下來。
將B機器上的mysql服務停止。
找到B機器上的mysql/data目錄,將你拷貝的目錄粘貼進去,然後啟動mysql服務就可以了。
2、使用SQL語句備份和恢復
你可以使用SELECT INTO OUTFILE語句備份數據,並用LOAD DATA INFILE語句恢復數據。這種方法只能導出數據的內容,不包括表的結構,如果表的結構文件損壞,你必須要先恢復原來的表的結構。
語法:
SELECT * INTO {OUTFILE | DUMPFILE} 』file_name』 FROM tbl_name
LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE 』file_name.txt』 [REPLACE | IGNORE]
INTO TABLE tbl_name
SELECT ... INTO OUTFILE 』file_name』
Ⅱ linux 登錄mysql 後 怎麼備份
用命令實現備份
MySQLl提供了一個mysqlmp命令,我們可以用它進行數據備份。
按提示輸入密碼,這就把tm資料庫所有的表結構和# mysqlmp -u root -p tm > tm_050519.sql數據備份到tm_050519.sql了,因為要總進行備份工作,如果數據量大會佔用很大空間,這時可以利用gzip壓縮數據,命令如下:
# mysqlmp -u root -p tm | gzip > tm_050519.sql.gz
系統崩潰,重建系統時,可以這樣恢復數據:
# mysqlmp -u root -p tm < tm_050519.sql
從壓縮文件直接恢復:
#gzip < tm_050519.sql.gz | mysqlmp -u root -p tm
當然,有很多MySQL工具提供更直觀的備份恢復功能,比如用phpMyAdmin就很方便。但我認為,mysqlmp是最基本、最通用的。
二、利用crontab,系統每天定時備份mysql資料庫
利用系統crontab來定時執行備份文件,按日期對備份結果進行保存,達到備份的目的。
1、創建保存備份文件的路徑/var/backup/mysqlbak
# mkdir -p /var/backup/mysqlbak
2、創建/usr/sbin/bakmysql文件
#vi /usr/sbin/bakmysql.sh
#!/bin/bash
# mysql備份腳本
cd /var/backup/mysqlbak/
dateDIR=`date +"%y-%m-%d"`
mkdir -p $dateDIR/data
for i in `/usr/local/www/mysql/bin/mysql -uroot -plin31415926 -e "show databases" |
grep -v "Database" | grep -v "information_schema"`
do
/usr/local/www/mysql/bin/mysqlmp -uroot -plin31415926 $i |
gzip > /var/backup/mysqlbak/$dateDIR/${i}_${dateDIR}.gz
done
3、修改文件屬性,使其可執行
# chmod +x /usr/sbin/bakmysql
4、修改/etc/crontab
# crontab -e
在下面添加
01 3 * * * root /usr/sbin/bakmysql
#表示每天3點鍾執行備份
這樣每天就可以在/var/backup/mysqlbak下看到備份的sql文件 了!
Ⅲ linux系統下mySQL資料庫 備份方法和腳本
方法一、適合所有格式的mysql資料庫,通過對資料庫導出導進寫個腳本定時執行:
1.導出整個資料庫 mysqlmp -u 用戶名 -p 資料庫名 > 導出的文件名 mysqlmp -u wcnc -p smgp_apps_wcnc > /存放路徑/wcnc.sql
2.導出一個表 mysqlmp -u 用戶名 -p 資料庫名 表名> 導出的文件名 mysqlmp -u wcnc -p smgp_apps_wcnc users> /存放路徑/wcnc_users.sql
3.導出一個資料庫結構 mysqlmp -u wcnc -p -d --add-drop-table smgp_apps_wcnc >/存放路徑/wcnc_db.sql
定義:
-d 沒有數據
--add-drop-table 在每個create語句之前增加一個drop table
4.導入資料庫 常用source 命令 進入mysql資料庫控制台:
如mysql -u root -p mysql>use 資料庫
方法二、針對mysql數據表格式為MyISAM的
假如數據文件在/var/lib/mysql
那麼直接寫個腳本
cp -r /var/lib/mysql /備份到的文件夾路徑
隔機備份用rsync增量,或定時完整備份。
Ⅳ linux中mysql如何備份與恢復(mysql備份和恢復資料庫命令)
把以前寫的一個發你看看
腳本要求:編寫shell腳本,每天凌晨1點備份td_oa庫,到mysql-back目錄,並將備份文件壓縮,壓縮名稱為備份的日期,只保留連續七天的備份物斗猜文件
#!/bin/bash
mysql-uroot-p123456-e"flushtableswithreadlock;"鎖住表
/usr/local/mysql/bin/mysqlmp-uroot-p123456td_oa--flush-logs--single-transaction mysql-uroot-p123456-e"unlocktables;"解鎖 a=`/bin/date%Y-%m-%d`#在這里加上銷源時間,壓縮的時候罩型加上時間,會失敗。 echo$a cd/gxl /bin/tar-czf$a.tar/fjp/td_oa.sql b="$a.tar" cp-p$b/root/fjp forcin`find/root/fjp-ctime7` do /bin/rm-rf$c done Ⅳ LINUX下如何直接對MYSQL資料庫進行備份
MYSQL提供了數據導入與導出的兩個命令,分別是mysqlimport(導入)和 Ⅵ 在linux下 如何使用mysqlmp進行mysql的完全備份 要完整命令 記得是完全備份不是某個庫。。
mysqlmp命令 Ⅶ Linux自動備份MySQL資料庫的實用方法
Ⅷ 在linux怎麼備份資料庫表
1:打開的資料庫的命令
mysqlmp(導出或者轉儲)。詳細用法請網路一下。
mysql資料庫導出要用到MySQL的mysqlmp工具,基本用法是:
shell> mysqlmp [OPTIONS] database [tables]
如果你不給定任何錶,整個資料庫將被導出。
通過執行mysqlmp --help,你能得到你mysqlmp的版本支持的選項表。
注意,如果你運行mysqlmp沒有--quick或--opt選項,mysqlmp將在導出結果前裝載整個結果集到內存中,如果你正在導出一個大的資料庫,這將可能是一個問題。
1.1、mysqlmp支持下列選項:
--add-locks
在每個表導出之前增加LOCK TABLES並且之後UNLOCK TABLE。(為了使得更快地插入到MySQL)。
--add-drop-table
在每個create語句之前增加一個drop table。
--allow-keywords
允許創建是關鍵詞的列名字。這由表名前綴於每個列名做到。
-c, --complete-insert
使用完整的insert語句(用列名字)。
-C, --compress
如果客戶和伺服器均支持壓縮,壓縮兩者間所有的信息。
--delayed
用INSERT DELAYED命令插入行。
-e, --extended-insert
使用全新多行INSERT語法。(給出更緊縮並且更快的插入語句)
-#, --debug[=option_string]
跟蹤程序的使用(為了調試)。
--help
顯示一條幫助消息並且退出。
LOAD DATA INFILE
--fields-terminated-by=...
--fields-enclosed-by=...
--fields-optionally-enclosed-by=...
--fields-escaped-by=...
--fields-terminated-by=...
這些選擇與-T選擇一起使用,並且有相應的LOAD DATA INFILE子句相同的含義。
LOAD DATA INFILE語法。
-F, --flush-logs
在開始導出前,洗掉在MySQL伺服器中的日誌文件。
-f, --force,
即使我們在一個表導出期間得到一個SQL錯誤,繼續。
-h, --host=..
從命名的主機上的MySQL伺服器導出數據。預設主機是localhost。
-l, --lock-tables.
為開始導出鎖定所有表。
-t, --no-create-info
不寫入表創建信息(CREATE TABLE語句)
-d, --no-data
不寫入表的任何行信息。如果你只想得到一個表的結構的導出,這是很有用的!
--opt
同--quick --add-drop-table --add-locks --extended-insert --lock-tables。
應該給你為讀入一個MySQL伺服器的盡可能最快的導出。
-pyour_pass, --password[=your_pass]
與伺服器連接時使用的口令。如果你不指定「=your_pass」部分,mysqlmp需要來自終端的口令。
-P port_num, --port=port_num
與一台主機連接時使用的TCP/IP埠號。(這用於連接到localhost以外的主機,因為它使用 Unix套接字。)
-q, --quick
不緩沖查詢,直接導出至stdout;使用mysql_use_result()做它。
-S /path/to/socket, --socket=/path/to/socket
與localhost連接時(它是預設主機)使用的套接字文件。
-T, --tab=path-to-some-directory
對於每個給定的表,創建一個 table_name.sql文件,它包含SQL CREATE 命令,和一個table_name.txt文件,它包含數據。 注意:這只有在mysqlmp運行在mysqld守護進程運行的同一台機器上的時候才工作。.txt文件的格式根據--fields-xxx和 --lines--xxx選項來定。
-u user_name, --user=user_name
與伺服器連接時,MySQL使用的用戶名。預設值是你的Unix登錄名。
-O var=option, --set-variable var=option設置一個變數的值。可能的變數被列在下面。
-v, --verbose
冗長模式。列印出程序所做的更多的信息。
-V, --version
列印版本信息並且退出。
-w, --where=''''where-condition''''
只導出被選擇了的記錄;注意引號是強制的!
"--where=user=''''jimf''''" "-wuserid>1" "-wuserid<1"
1.2、最常見的mysqlmp的一個備份:
雖然mysqlmp支持的命令有很多,對於大多數人而言,我們只需要使用-opt這個命令就已經足夠了,為你的資料庫做一個完整的備份:
mysqlmp --opt database > backup-file.sql
但是它對用來自於一個資料庫的信息充實另外一個MySQL資料庫也是有用的:
mysqlmp --opt database | mysql --host=remote-host -C database
1.3、使用mysqlmp導出的文件恢復資料庫
由於mysqlmp導出的是完整的SQL語句,所以用mysql客戶程序很容易就能把數據導入了:
shell> mysqladmin create target_db_name
shell> mysql target_db_name < backup-file.sql
就是
shell> mysql 庫名 < 文件名
二、使用mysqlmp定時備份資料庫的腳本
2.1、備份腳本
使用腳本每天定期執行資料庫備份操作,對每個使用mysql資料庫的人來說都很有必要,這樣的腳本網上有很多,這里摘抄一個朋友的腳本 dbbackup:
這個腳本每天最多隻執行一次,而且只保留最近五天的備份在伺服器上。
dbbackup代碼:
#!/bin/bash
#This is a ShellScript For Auto DB Backup
#Powered by aspbiz
#2004-09
#Setting
#設置資料庫名,資料庫登錄名,密碼,備份路徑,日誌路徑,數據文件位置,以及備份方式
#默認情況下備份方式是tar,還可以是mysqlmp,mysqldot
#默認情況下,用root(空)登錄mysql資料庫,備份至/root/dbxxxxx.tgz
DBName=mysql
DBUser=root
DBPasswd=
BackupPath=/root/
LogFile=/root/db.log
DBPath=/var/lib/mysql/
#BackupMethod=mysqlmp
#BackupMethod=mysqlhot
#BackupMethod=tar
#Setting End
NewFile="$BackupPath"db$(date +%y%m%d).tgz
DumpFile="$BackupPath"db$(date +%y%m%d)
OldFile="$BackupPath"db$(date +%y%m%d --date=''''5 days ago'''').tgz
echo "-------------------------------------------" >> $LogFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile
echo "--------------------------" >> $LogFile
#Delete Old File
if [ -f $OldFile ]
then
rm -f $OldFile >> $LogFile 2>&1
echo "[$OldFile]Delete Old File Success!" >> $LogFile
else
echo "[$OldFile]No Old Backup File!" >> $LogFile
fi
if [ -f $NewFile ]
then
echo "[$NewFile]The Backup File is exists,Can''''t Backup!" >> $LogFile
else
case $BackupMethod in
mysqlmp)
if [ -z $DBPasswd ]
then
mysqlmp -u $DBUser --opt $DBName > $DumpFile
else
mysqlmp -u $DBUser -p$DBPasswd --opt $DBName > $DumpFile
fi
tar czvf $NewFile $DumpFile >> $LogFile 2>&1
echo "[$NewFile]Backup Success!" >> $LogFile
rm -rf $DumpFile
;;
mysqlhot)
rm -rf $DumpFile
mkdir $DumpFile
if [ -z $DBPasswd ]
then
mysqlhot -u $DBUser $DBName $DumpFile >> $LogFile 2>&1
else
mysqlhot -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1
fi
tar czvf $NewFile $DumpFile >> $LogFile 2>&1
echo "[$NewFile]Backup Success!" >> $LogFile
rm -rf $DumpFile
;;
*)
/etc/init.d/mysqld stop >/dev/null 2>&1
tar czvf $NewFile $DBPath$DBName >> $LogFile 2>&1
/etc/init.d/mysqld start >/dev/null 2>&1
echo "[$NewFile]Backup Success!" >> $LogFile
;;
esac
fi
echo "-------------------------------------------" >> $LogFile
2.2、放入crontab定期執行dbbackup
假定dbbackup在/root目錄下。我們通過使用crontab命令,設置每天0點10分執行/root/dbbakup腳本。
1、 使用 crontab –e編輯crontab
2、 在crontab中加入:
#back for jabber database
10 0 * * * /root/dbbackup
MySQL定期備份是一項重要的工作,但人工操作太繁瑣,也難避免有所疏漏,使用下面的方法即可讓系統定期備份數據。
◆1、創建備份文件夾
#cd /www
#makedir backup
◆2、編寫運行腳本
#vi autobackup
寫入以下內容:
filename=`date +%Y%m%d`
mysql_bin_dir/mysqlmp _opt dataname -u user -ppassword | gzip
/www/mysqlbackup/name$filename.gz
保存退枝褲出
說明:
(1)mysql_bin_dir:mysql的bin路徑;
(2)dataname:資料庫名;
(3)user:資料庫用戶名;
(4)password:陸搭歲用戶密碼;
(5)name:早睜自定義備份文件前綴標識。
如上例,將自動備份mysql資料庫,並以gzip壓縮方式存儲,文件名為name20080101.gz的形式。
◆3、為腳本添加執行許可權
#chmod +x autobackup
◆4、讓crontab來完成定期執行的任務
這一步中,Redhat的方法會不一樣,後面專門給出。
編輯crontab:
#vi /etc/crontab
在最後一行中加入:
01 5 * * * root /www/autobackup
每天5點運行腳本,也可以修改5為其他指定時間。
Redhat方法:
Redhat的crontab採用按時間調用4個目錄(/etc/cron.hourly:每小時;/etc/cron.daily:每天;/etc/cron.weekly:每周;/etc/cron.monthly:每月)中腳本出來運行的方式。
Redhat中只需要將剛才編輯的腳本復制到相應的目錄即可。
◆5、重啟crontab
#/etc/rc.d/init.d/crond restart
完成。
mysql> use mysql
Database changed
2:查看資料庫的命令
mysql> show databases;
3:查看資料庫中表的命令
mysql> show tables;
4:查看錶的詳細結構
mysql> desc tablename;
5:新建資料庫
mysql> create database school;
Query OK, 1 row affected (0.00 sec)
6:新建表
mysql> create table user01(
-> id varchar(20) NOT NULL,
-> userName varchar(10) NOT NULL,
-> age int(11) default'0',
-> sex char(2) NOT NULL default'm',
-> PRIMARY KEY (id)
-> )TYPE=InnoDB;
Query OK, 0 rows affected, 1 warning (0.02 sec)mysql>desc student;
7:插入
mysql> insert into student(id,stuName) values('1','tomcat');
Query OK, 1 row affected (0.00 sec)
8:刪除
mysql> delete from student where id='1';
Query OK, 1 row affected (0.01 sec)
9:刪除表中所有數據
mysql> truncate table student;
Query OK, 1 row affected (0.01 sec)
10:創建新用戶並給予許可權
mysql>grant all privileges on *.* to dbsync@"127.0.0.1" identified by "1234";
11:更改Mysql用戶密碼
c:\Mysql5.0\bin>mysqladmin -u root -p password 1234
Enter password: ****
備份資料庫及表
我們用mysqlmp命令來備份資料庫
c:\mysql\bin\>mysqlmp –u root –p 3306 mysql>d:\backup.sql
執行此語句將把mydb 備份到D盤的backup.sql文件中
備份多個資料庫表