Centos-Mysql复制备份还原数据库

备份单个数据库的数据和结构(,数据库名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 ]
上一篇:数据库-索引


下一篇:PHP安装