改、查)等种种操作,使用mysql的-e参数可以举行各

2019-11-26 14:35栏目:计算机操作
TAG:

使用mysql的-e参数能够执行种种sql的(创设,删除,增,删,改、查)等各样操作

行使shell命令操作数据库,shell命令数据库

使用mysql的-e参数能够进行各类sql的(创立,删除,增,删,改、查)等各样操作

mysqldump 逻辑备份的不错姿势

  1. 采纳mysqldump进行逻辑备份

 

1卡塔尔国全逻辑备份:

 

mysqldump -uxxx -p --flush-logs --delete-master-logs --all-databases > alldb.sql (每一天早晨实行三次全备)

 

2卡塔尔国增量备份:

 

mysqladmin flush-logs (每时辰刷一下,保存起来,进行了一回增量备份)

 

3)缺点:

 

1> --all-databases 包括了 mysql 数据库,此中含有了权力的数量,所以我们相应加上 --flush-privileges,在回复时,权限技巧看到效果;

 

瞩目 --all-databases 满含了mysql数据库,然则不会含有 information_schema和performance_schema几个数据库。

 

2> 因为 mysqldump 暗许启用了 --lock-tables,所以会招致在备份时期对具有表持有读锁: lock table tb read local,所以具有的update,delete语句

 

会被打断。不过select语句和insert语句不会被封堵。

 

3> --delete-master-logs 备份之后,会实行 purge logs to 语句。删除了备份之后的master上的binary log. 平日来讲,大家不提出随意删除binary log.

 

咱俩应有将它们保存起来,实际不是直接删除。防止万生机勃勃,要留条退路。

 

4> 该备份方式,尽管在全部备份进程中存有了 lock table tb read local,不过还是得以施行 insert 语句的。所以博得的不是黄金时代致性的备份。就算拿到的不是

 

大器晚成致性的备份,不过因为flush log之后,全数的操作 也会记入新的binary log,所以风流罗曼蒂克旦运用了具有新的binary log来举办完全复苏的话,最终苏醒的数目

 

也是生机勃勃致性的。当然不风度翩翩致性的备份不能够用于搭建slave。

 

若果要赢得风流浪漫致性的备份的话,须求采取 --lock-all-tables 大概使用 --single-transaction 选项。后边八个采取了全局读锁,不容许其余校订操作。前者使用

 

了政工的特点来获得意气风发致性备份。

 

据此我们相应对地点的备份方式进行改良。

 

  1. 使用mysqldump备份的精品姿势

 

1卡塔 尔(阿拉伯语:قطر‎优化锁 和 获得生机勃勃致性备份:

 

咱俩得以采取结合使用 --single-transaction 、--master-data=2 、--flush-logs 来达到将锁依时期大大减弱的指标。同期有收获了后生可畏致性的备份,况兼该少年老成致性备份和 flush 的日志也是平等的;

 

2卡塔尔去掉 --delete-master-logs 选项,改为在备份之后,将享有被刷新的 binary log 移到一个地点保存起来;

 

3卡塔 尔(阿拉伯语:قطر‎因为使用了 --single-transaction 选项,针没有错只可以是 innodb 数据,不过mysql数据是Myisam引擎的,所以大家最好将mysql数据库的备份分开来,

 

此外极其针对 mysql 数据库举办三回操作。当然不分开来备份,恐怕也从不难点。

 

4卡塔 尔(阿拉伯语:قطر‎还要加上 --routines 来备份存款和储蓄进度和函数,触发器私下认可会备份。

 

优化以往,大家拿到:

 

mysqldump -uxxx -p --single-transaction --master-data=2 --routines --flush-logs --databases db1 db2 db3 > alldb.sql;

 

mysqldump -uxxx -p --flush-privileges --databases mysql > mysql.sql;

 

少年老成经将mysql也一齐备份的话:

 

mysqldump -uxxx -p --single-transaction --master-data=2 --routines --flush-logs --flush-privileges --all-databases > alldb.sql;

 

  1. 使用mysqldump来搭建slave环境

 

搭建slave遇到,日常常有三种艺术,对于规模比超级小的库,能够选拔mysqldump来搭建;对于规模相当大的库,最棒利用xtrabackup来搭建,速度要快超多。

 

1卡塔 尔(阿拉伯语:قطر‎首先 分别在master和slave上设置分化的server_id=1/101,启用master上的log-bin=1,启用slave上的relog-log=relay-bin; 在master上设置:

 

binlog_format=row;二进制日志的格式。maser上最棒还设置sync_binlog=1 和 innodb_flush_log_at_trx_commit=1幸免产生服务器崩溃时

 

产生复制破坏。在slave上最棒还布署:read-only=1 和 skip-slave-start=1 前边三个可避防止未有super权限的顾客在slave上海展览中心开写,后面一个防止在起步

 

slave数据库时,自动运行复制线程。现在供给手动start slave来运行复制线程。注意slave没有要求启用 log-bin=1,除非须要搭建二级slave。

 

2卡塔尔在master上营造贰个独具复制权限的客商:

 

grant replication slave, replication client on *.* to [email protected]’192.168.%.%’ identified by ‘123456’;

3卡塔 尔(英语:State of Qatar)备份master上的数据库,迁移到slave上:

[[email protected] ~]# mysqldump -uroot -p --routines --flush-logs --master-data=2 --databases db2 db1>/root/backup.sql
Enter password:
[[email protected] ~]# scp /root/backup.sql 192.168.137.9:/tmp/backup.sql
The authenticity of host '192.168.137.9 (192.168.137.9)' can't be established.
RSA key fingerprint is a4:cd:c0:13:d1:8c:c0:a5:e7:c4:43:b5:95:17:af:d3.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.137.9' (RSA) to the list of known hosts.
[email protected]'s password:
backup.sql  

大奖888,因为slave的搭建须要风流倜傥致性的备份,所以供给启用 --lock-all-tables(master-data=53%会自动启用--lock-all-tables)只怕--single-transaction;

 

除此以外还亟需精晓该生机勃勃致性备份的数目,对应的master上的binary log的文本名,以至在该文件中的position,所以必得启用 master-data选项。

 

因为--master-data会启用--lock-all-tables 所以数据才是大器晚成致性的;然则招致了全局锁,不可能开展任何改变操作;下边大家使用--single-transaction举办优化:

 

mysqldump -uroot -p --routines --flush-logs --single-transaction --master-data=2 --databases db1 db2 > /root/backup.sql; (--flush-logs非必须)

 

诸如此比全局锁仅仅在备份的起来不久的兼具。不会再备份的满贯经过中全部全局锁。

 

4卡塔 尔(英语:State of Qatar)在slave上实践备份的本子,然后连上master,开启复制线程:

 

执行sql脚本:

 

mysql> source /tmp/backup.sql

找到 --master-data 输出的 binary log 的公文名和postion:

 

[[email protected] ~]# head -50 /tmp/backup.sql

......
/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @[email protected]@SQL_NOTES, SQL_NOTES=0 */;

--
-- Position to start replication or point-in-time recovery from
--

-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000010', MASTER_LOG_POS=809;

执行 change master to, start slave:

 

在salve上实施命令起始复制:

mysql> change master to master_host='192.168.137.8', master_user='repl', master_password='123456',

    -> master_log_file='mysql-bin.000010', master_log_pos=809;

Query OK, 0 rows affected, 2 warnings (0.09 sec)

 

mysql> start slave;

Query OK, 0 rows affected (0.04 sec)

 

末尾在slave上查看复制线程的意况:

 

mysql> show slave statusG

... ...

   Slave_IO_Running: Yes

  Slave_SQL_Running: Yes

......

slave_IO_Runing 和 slave_sql_runing 状态都以yes表示搭建设成功。

 

5卡塔 尔(阿拉伯语:قطر‎replication涉及到的多个线程:

1> master上的 binlog dump(dump线程),即读取master上的binlog,发送到slave上的线程。

2> slave上的IO线程:读取slave上的relay log。

3> slave上的sql线程:推行IO线程读取的relay log的线程。 

 

  1. 使用mysqldump的备份举行 还原

 

上边接纳 mysqldump 实行叁个备份,然后删除 datadir, 然后接受备份sql脚本和binary log实行还原的进度。

 

1卡塔尔首先实行四个全备:

 

mysqldump -uroot -p --single-transaction --master-data=2 --routines --flush-logs --databases gs ngx_lua > gs_ngx_lua_backup.sql;

数据库有多个库: gs , ngx_lua.

 

2卡塔尔将 备份时刷新之后的 binary log 利用 mv 命令移动到安全的职位,也便是--master-data=2出口的日记文件,它后边的日记文件都存款和储蓄到安全的岗位:

 

[[email protected] ~]# head -n 50 gs_ngx_lua_backup.sql
-- MySQL dump 10.13  Distrib 5.6.26, for linux-glibc2.5 (i686)
--
-- Host: localhost    Database: gs
... ...--
-- Position to start replication or point-in-time recovery from
--

-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000027', MASTER_LOG_POS=120;

 

 

约等于将 MASTE讴歌ZDX_LOG_FILE='mysql-bin.000027' 早先的日志都存款和储蓄到其余地点。

 

然后实践:purge binary logs to 'mysql-bin.000027' 更新了 mysql-bin.index 中的索引消息,这里并从未去除binary log,因为它们曾经被mv走了。

 

3卡塔尔下边模拟一个 增量备份:

 

 

mysql> delete from user where id=5;
Query OK, 1 row affected (0.02 sec)

mysql> select * from user;
+----+----------+------+-------------+----------+
| id | name| sex  | phone  | addr|
+----+----------+------+-------------+----------+
|  1 | yuanfang |    1 | 14465463786 | hangzhou |
|  2 | Andy|    0 | 14465463786 | beijing  |
|  3 | peter    |    0 | 14465463786 | Hongkong |
|  4 | lexin    |    1 | 36565634    | shenzhen |
+----+----------+------+-------------+----------+
4 rows in set (0.00 sec)


mysql> flush logs;
Query OK, 0 rows affected (0.11 sec)

mysql> show binary logs;
+------------------+-----------+
| Log_name    | File_size |
+------------------+-----------+
| mysql-bin.000027 |  370 |
| mysql-bin.000028 |  120 |
+------------------+-----------+
2 rows in set (0.00 sec)

 

 

那边 flush logs 举办增量备份,然后将增量备份的 bianry log 文件 mysql-bin.000027 也蕴藏起来。

 

下一场在进行一条 delete 语句:

 

 

mysql> select * from user;
+----+----------+------+-------------+----------+
| id | name| sex  | phone  | addr|
+----+----------+------+-------------+----------+
|  1 | yuanfang |    1 | 14465463786 | hangzhou |
|  2 | Andy|    0 | 14465463786 | beijing  |
|  3 | peter    |    0 | 14465463786 | Hongkong |
+----+----------+------+-------------+----------+
3 rows in set (0.00 sec)

 

到这里数据库的新星事态是:user 表独有3条记下。

 

下一场大家同样将 mysql-bin.000028 也蕴藏起来。

 

4卡塔 尔(阿拉伯语:قطر‎然后大家删除 data-dir 目录中的全数文件,然后发轫苏醒:

 

[[email protected] mysql]# pwd

/var/lib/mysql

[[email protected] mysql]# mv ./* /backup/before_delete/

那时 data-dir 目录是空的。然后我们总计动用 mysqladmin -uroot -p shutdown 来关闭mysqld,开掘早不到 mysql.sock 相当小概关闭,大家只能利用

 

killall mysqld

 

来关闭。

 

5卡塔 尔(英语:State of Qatar)然后举行数据库的早先化,然后开头上涨:

 

踏向到 /usr/local/mysql/script 目录,然后推行初叶化:

 

./mysql_install_db  --user=mysql --datadir=/var/lib/mysql --basedir=/usr/local/mysql

 

 ./mysql_install_db

开端化成功以往,实行:

 

/usr/local/mysql/bin/mysql_secure_installation

 

来举办密码设置。这一步可能会报错:找不到 /tmp/mysql.sock 文,杀绝办法,在/etc/my.cnf 中的[client], [mysql], [mysqld] 都进行上边包车型大巴装置:

 

socket=/tmp/mysql.sock

 

下一场再次执行:/usr/local/mysql/bin/mysql_secure_installation 就行了。

 

开首化完结现在,大家应用备份的sql脚本来实行理并答复原:

 

[[email protected] ~]# mysql -uroot -p < gs_ngx_lua_backup.sql

执行到位以往,发掘 gs 和 ngx_lua 数据库都还原出来了,可是他们的数据不是流行的数量:

 

 

mysql> use gs;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from user;
+----+----------+------+----------------+----------+
| id | name| sex  | phone| addr|
+----+----------+------+----------------+----------+
|  1 | yuanfang |    1 | 14465463786    | hangzhou |
|  2 | Andy|    0 | 14465463786    | beijing  |
|  3 | peter    |    0 | 14465463786    | Hongkong |
|  4 | lexin    |    1 | 36565634  | shenzhen |
|  5 | lexin2   |    1 | 43563436565634 | aomao    |
+----+----------+------+----------------+----------+
5 rows in set (0.01 sec)

 

 

那是因为,大家还并没有动用 mysql-bin.000027 和 mysql-bin.000028 五个binary log。mysql-bin.000027 是我们前边模拟的增量备份,而mysql-bin.000028 是 删除data-dir目录时,最新的binary log。依次使用了那多个binary log之后,数据库技能还原到新型的景况。

 

6)应用 binary log:

 

[[email protected] backup]# pwd

/backup

[[email protected] backup]# mysqlbinlog mysql-bin.000027 > 27.sql

[[email protected] backup]# mysqlbinlog mysql-bin.000028 > 29.sql

mysqlbinlog mysql-bin.000027 > 27.sql 得到了 27.sql 和 28.sql 之后,使用 mysql 来执行:

 

mysql -uroot -p < 27.sql; 应用了增量备份的binary log.

 

下一场查看数据:

 

mysql> mysql> select * from user;
+----+----------+------+-------------+----------+
| id | name| sex  | phone  | addr|
+----+----------+------+-------------+----------+
|  1 | yuanfang |    1 | 14465463786 | hangzhou |
|  2 | Andy|    0 | 14465463786 | beijing  |
|  3 | peter    |    0 | 14465463786 | Hongkong |
|  4 | lexin    |    1 | 36565634    | shenzhen |
+----+----------+------+-------------+----------+
4 rows in set (0.00 sec)

 

 

然应用 28.sql :

 

mysql -uroot -p < 28.sql;

 

得到最新的动静:

 

mysql> select * from user;
+----+----------+------+-------------+----------+
| id | name| sex  | phone  | addr|
+----+----------+------+-------------+----------+
|  1 | yuanfang |    1 | 14465463786 | hangzhou |
|  2 | Andy|    0 | 14465463786 | beijing  |
|  3 | peter    |    0 | 14465463786 | Hongkong |
+----+----------+------+-------------+----------+
3 rows in set (0.00 sec)

 

 

能够见见,成功的过来到了删减 data-dir 目录此前的情形了。

 

  1. mysqldump的 坑

 

只要对 mysqldump 的私下认可启用的选项面生的话,只怕会被暗中认可启用的选项 --add-drop-table 给坑了。因为暗许会生成 drop table if exist 语句。恐怕会促成数据的不见。  --add-drop-database 私下认可未有启用。若是不想他生成 drop table 语句,能够到场--skip-add-drop-table选项,或许 --add-ropt-table=0也足以。

 

  1. 总结:

 

1卡塔尔逻辑备份的特级办法:

 

全备:

 

mysqldump -uxxx -p --single-transaction --master-data=2 --routines --flush-logs --databases db1 db2 db3 > alldb.sql;

 

mysqldump -uxxx -p --flush-privileges --databases mysql > mysql.sql;

 

比方将mysql也一同备份的话:

 

mysqldump -uxxx -p --single-transaction --master-data=2 --routines --flush-logs --flush-privileges --all-databases > alldb.sql;

 

有时,还亟需步入:--default-character-set=utf8/utf8mb4 ,该采纳日常也能够布置在/etc/my.cnf中。

 

增量备份:flush logs; 然后将binary log存款和储蓄起来就能够。

 

2卡塔尔国搭建slave时的最棒采纳:

 

mysqldump -uxxx -p --single-transaction --master-data=2 --routines --databases db1 db2 db3 > alldb.sql;

 

搭建slave,未有供给 --flush-logs。当然搭建slave的特等艺术是运用 xtrabackup,物理备份。

 

3卡塔尔使用mysqldump备份的sql脚本还原的艺术:

 

先还原数据库,然后采取增量日志和新颖日志,binary log在使用早前供给使用mysqlbinlog命令来管理。

逻辑备份的不易姿势 1. 施用mysqldump实行逻辑备份 1卡塔 尔(英语:State of Qatar)全逻辑备份: mysqldump -uxxx -p --flush-logs --delete-master-logs --all-databases alldb.sql (每日...

用法

mysql  -uxxx    –pxxx   -e  “mysql 命令”

当然还能使用 如下写法

mysql  -e  -uxxx    –pxxx    “mysql 命令”

用法

mysql  -uxxx    –pxxx   -e  “mysql 命令”

理之当然还足以接收 如下写法

mysql  -e  -uxxx    –pxxx    “mysql 命令”

实践出真知

[root@iZwz99qnmldt4n744noo9gZ ~]# mysql -e "show databases;" -uroot -ppenghui110 >test.txt
[root@iZwz99qnmldt4n744noo9gZ ~]# ls
databases_backup_20170411172702  lnmp1.3-full  lnmp-install.log  test.txt
[root@iZwz99qnmldt4n744noo9gZ ~]# cat test.txt 
Database
information_schema
blog
mysql
performance_schema
question
wordpress
yii2
[root@iZwz99qnmldt4n744noo9gZ ~]# mysql -uroot -ppenghui110  -e "show databases;"  >a.txt
[root@iZwz99qnmldt4n744noo9gZ ~]# cat a.txt 
Database
information_schema
blog
mysql
performance_schema
question
wordpress
yii2

参照他事他说加以考查文书档案:

施行出真知

[[email protected] ~]# mysql -e "show databases;" -uroot -ppenghui110 >test.txt
[[email protected] ~]# ls
databases_backup_20170411172702  lnmp1.3-full  lnmp-install.log  test.txt
[[email protected] ~]# cat test.txt 
Database
information_schema
blog
mysql
performance_schema
question
wordpress
yii2
[[email protected] ~]# mysql -uroot -ppenghui110  -e "show databases;"  >a.txt
[[email protected] ~]# cat a.txt 
Database
information_schema
blog
mysql
performance_schema
question
wordpress
yii2

仿照效法文书档案:

使用mysql的-e参数能够试行种种sql的(创造,删除,增,删,改、查)等各类操功能法 mysql -uxxx –...

版权声明:本文由大奖888-www.88pt88.com-大奖888官网登录发布于计算机操作,转载请注明出处:改、查)等种种操作,使用mysql的-e参数可以举行各