数据库


数据库及表导入导出

<p>[TOC]</p> <h1>数据库及表导入/导出</h1> <h2>导出</h2> <pre><code>mysqldump -h172.16.18.230 -uocp_gw_dev -pocp_8606625 ocp_gw_dev &gt; ocp_gw_dev.sql mysqldump -h172.16.18.230 -uocp_open_capacity -pocp_8606625 ocp_open_capacity &gt; 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 &lt; /opt/dbbak/ocp_gw_dev.sql</code></pre> <h2>全部一起导出导入</h2> <p>备份:</p> <pre><code>mysqldump -uroot -p -B --all-databases &gt; ./allbackup.sql</code></pre> <p>还原:</p> <pre><code>mysql -uroot -ppasswd &lt; ./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 &gt; /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 &gt; ettb2.sql;</code></pre> <pre><code># 2. 数据库导入 ## 2.1 还原数据库命令 到对应目录下 ```bash mysql -ueasytong -p easytongdb &lt; 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 &gt;db.sql;</code></pre> <p>2、导出数据库为dbname某张表(test)结构</p> <pre><code class="language-bash">mysqldump -uroot -pdbpasswd -d dbname test&gt;db.sql;</code></pre> <p>3、导出数据库为dbname所有表结构及表数据(不加-d)</p> <pre><code class="language-bash">mysqldump -uroot -pdbpasswd dbname &gt;db.sql;</code></pre> <p>4、导出数据库为dbname某一张表(test)结构及表数据(不加-d)</p> <pre><code class="language-bash">mysqldump -uroot -pdbpasswd dbname test &gt; 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 &gt; 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&gt; 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>

页面列表

ITEM_HTML