Centos-Mysql複製備份還原資料庫

大向二發表於2019-01-17

備份單個資料庫的資料和結構(,資料庫名mydb)

mysqldump -u使用者名稱 -p密碼 -d 資料庫名 表名 > 指令碼名;
匯出整個資料庫結構和資料

mysqldump -h localhost -uroot -p123456 database > dump.sql
mysqldump -h `192.168.1.191` -uroot -p111111 js_namc>/tmp/js_namc.sql

匯出單個資料表結構和資料

mysqldump -h localhost -uroot -p123456  database table > dump.sql
mysqldump -h `172.16.7.16` -uroot -pnsv_2018  gx_nae_online ad_user > /tmp/ad_user.sql

匯出整個資料庫結構(不包含資料)

mysqldump -h localhost -uroot -p123456  -d database > dump.sql

匯出單個資料表結構(不包含資料)

mysqldump -h localhost -uroot -p123456  -d database table > dump.sql

還原單個資料庫(需指定資料庫)

mysql>use namc
mysql>source /tmp/js_namc.sql

常見選項:

--all-databases, -A: 備份所有資料庫
--databases, -B: 用於備份多個資料庫,如果沒有該選項,mysqldump把第一個名字引數作為資料庫名,後面的作為表名。使用該選項,mysqldum把每個名字都當作為資料庫名。

--force, -f:即使發現sql錯誤,仍然繼續備份
--host=host_name, -h host_name:備份主機名,預設為localhost
--no-data, -d:只匯出表結構
--password[=password], -p[password]:密碼
--port=port_num, -P port_num:制定TCP/IP連線時的埠號
--quick, -q:快速匯出
--tables:覆蓋 --databases or -B選項,後面所跟引數被視作表名
--user=user_name, -u user_name:使用者名稱
--xml, -X:匯出為xml檔案

為了方便快速複製一個資料庫,可以用以下命令
將db1資料庫的資料以及表結構複製到newdb資料庫

建立新的資料庫

mysql -u root -p123456
mysql>CREATE DATABASE `gx_namc_omline` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
mysql>CREATE DATABASE IF NOT EXISTS tj_vote DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

複製資料庫,使用mysqldump及mysql的命令組合,一次性完成複製

mysqldump gx_namc -u root -pnsv_2018 --add-drop-table | mysql gx_namc_online -u root -pnsv_2018

注意-p123456引數的寫法:-p後面直接跟密碼,中間沒有空格

以上是在同一臺MySQL伺服器上覆制資料庫的方法。如果要複製到遠端另一臺MySQL伺服器上,可以使用mysql的“ -h 主機名/ip”引數。前提是mysql允許遠端連線,且遠端複製的傳輸效率和時間可以接受。

不在同一個mysql伺服器上

mysqldump db1 -uroot -p123456 --add-drop-table | mysql -h 192.168.1.22 newdb -u root -p123456

剛剛開始研究mysql資料庫時,經常遇到服務啟動失敗錯誤:

mysqld服務啟動失敗, Failed to restart mysqld.service: Unit not found.
-bash-4.2# service mysqld restart 
Redirecting to /bin/systemctl restart mysqld.service
Failed to restart mysqld.service: Unit not found.
並不存在 mysqld 的服務,

複製程式碼

-bash-4.2# chkconfig --list

Note: This output shows SysV services only and does not include native
  systemd services. SysV configuration data might be overridden by native
  systemd configuration.

  If you want to list systemd services use `systemctl list-unit-files`.
  To see services enabled on particular target use
  `systemctl list-dependencies [target]`.

aegis           0:off   1:off   2:on    3:on    4:on    5:on    6:off
agentwatch      0:off   1:off   2:on    3:on    4:on    5:on    6:off
iprdump         0:off   1:off   2:on    3:on    4:on    5:on    6:off
iprinit         0:off   1:off   2:on    3:on    4:on    5:on    6:off
iprupdate       0:off   1:off   2:on    3:on    4:on    5:on    6:off
jexec           0:off   1:on    2:on    3:on    4:on    5:on    6:off
mysql.server    0:off   1:off   2:on    3:on    4:on    5:on    6:off
netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off

可見,服務名不是mysqld 而是 mysql.server
於是:

-bash-4.2# service mysql.server restart 
Shutting down MySQL....[ OK ]
Starting MySQL.[ OK ]


相關文章