数据库及表导入导出
<p>[TOC]</p>
<h1>数据库及表导入/导出</h1>
<h2>导出</h2>
<pre><code>mysqldump -h172.16.18.230 -uocp_gw_dev -pocp_8606625 ocp_gw_dev > ocp_gw_dev.sql
mysqldump -h172.16.18.230 -uocp_open_capacity -pocp_8606625 ocp_open_capacity > ocp_open_capacity.sql</code></pre>
<h2>还原</h2>
<p><code>注意: 1、在导入备份数据库前,db_name如果没有,需要先创建数据(用户有无不影响导入),而且与backup.sql中数据库一样才可以导入。 2、需要重新对用户进行授权。</code></p>
<pre><code>mysqladmin -uroot -p10dfe7c8 create ocp_gw_dev
mysql -uroot -p10dfe7c8 ocp_gw_dev < /opt/dbbak/ocp_gw_dev.sql</code></pre>
<h2>全部一起导出导入</h2>
<p>备份:</p>
<pre><code>mysqldump -uroot -p -B --all-databases > ./allbackup.sql</code></pre>
<p>还原:</p>
<pre><code>mysql -uroot -ppasswd < ./allbackup.sql</code></pre>
<p><code>说明:数据库还原后,需要重启mariadb服务,用户名和密码都是原来的环境中的,包括root密码。</code></p>
<h1>一.数据库导出</h1>
<h2>1. 备份数据库命令</h2>
<p>排除二张表:am_account_photo,sc_files,因为不排除这两张,导出不成功,数据过于庞大当导出到大小为:5684520449时退出并报错。</p>
<pre><code class="language-bash">mysqldump -n -f -uroot -p --flush-privileges --default-character-set=utf8mb4 --ignore-table=easytongdb.am_account_photo --ignore-table=easytongdb.sc_files easytongdb > /data/easytongdb.sql</code></pre>
<p>再导出排除的两张表</p>
<pre><code class="language-bash">mysqldump --max_allowed_packet=512M -uroot -p easytongdb am_account_photo sc_files --hex-blob > ettb2.sql;</code></pre>
<pre><code># 2. 数据库导入
## 2.1 还原数据库命令
到对应目录下
```bash
mysql -ueasytong -p easytongdb < easytongdb.sql
输入密码进行导入</code></pre>
<h1>二、导出表结构及表数据</h1>
<p>命令行下具体用法如下: mysqldump -u用户名 -p密码 -d 数据库名 表名 脚本名;
1、导出数据库为dbname的表结构(其中用戶名为root,密码為dbpasswd,生成的脚本名為db.sql)</p>
<pre><code class="language-bash">mysqldump -uroot -pdbpasswd -d dbname >db.sql;</code></pre>
<p>2、导出数据库为dbname某张表(test)结构</p>
<pre><code class="language-bash">mysqldump -uroot -pdbpasswd -d dbname test>db.sql;</code></pre>
<p>3、导出数据库为dbname所有表结构及表数据(不加-d)</p>
<pre><code class="language-bash">mysqldump -uroot -pdbpasswd dbname >db.sql;</code></pre>
<p>4、导出数据库为dbname某一张表(test)结构及表数据(不加-d)</p>
<pre><code class="language-bash">mysqldump -uroot -pdbpasswd dbname test > db.sql;</code></pre>
<p>例如:</p>
<pre><code class="language-bash">mysqldump --max_allowed_packet=512M -uroot -p easytongdb am_account_photo sc_files --hex-blob > ettb2.sql;</code></pre>
<h1>三、mysql max_allowed_packet查询和修改</h1>
<p>导入导出报下面错时,一般是max_allowed_packet设置太小</p>
<pre><code class="language-bash">MySQL server has gone away (2006)</code></pre>
<p>定义:</p>
<pre><code class="language-bash">max_allowed_packet:server接受的数据包最大值</code></pre>
<p>查看方法:</p>
<pre><code class="language-bash">mysql> show VARIABLES like '%max_allowed_packet%';</code></pre>
<p>显示结果:</p>
<pre><code class="language-bash"> +--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+</code></pre>
<p>以上说明目前的配置是:1M</p>
<p>修改方法:</p>
<pre><code class="language-bash">编辑mysql.cnf中的[mysqld]段,增加/修改为:max_allowed_packet = 20M然后,重启mysql服务,再次进行查看以确认是否设置生效。</code></pre>
<p>p.s.这样的修改方式不会因为重启服务而丢弃设置。</p>