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

备份单个数据库的数据和结构(,数据库名mydb) mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名;导出整个数据库结构和数据 mysqldump -h localhost -uroot -p123456 database > dump.

备份单个数据库的数据和结构(,数据库名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 ]