一、安装dns服务器
1、服务器管理器->添加角色
2、安装 dns服务器
3、一直点下一步
二、dns服务器安装成功后 安装 域控服务器
1、添加角色 找到
2、一直点下一步知道安装完成
三、完成 AD服务器安装后 按 Win+R 输入 dcpromo
跟着引导走知道输入域名
需要注意
不要选择默认 要选择 08 r2
然后到
点击确定就行了
完成后重启下
这样就弄好了
客户机加入
1、把客户级的dns服务配置好 过程和之前一样
2、把客户级的dns地址设置成主控域的ip地址
3、高级系统设置->更改 输入域 yy.com 最后输入 有权限加入的用户名密码
一、MySQL完全备份与恢复
备份的主要目的是灾难恢复,备份还可以测试应用、回滚数据修改、查询历史数据、审计等。
1、数据备份的重要性
在企业中数据的价值至关重要,数据保障了企业业务的正常运行。因此,数据的安全性及数据的可靠性是运维的重中之重,任何数据的丢失都可能对企业产生严重的后果。通常情况下造成数据丢失的原因如下几种:
程序错误
人为操作错误
运算错误
磁盘故障
灾难(火灾、地震)和盗窃
三、常见的备份方法
二、数据库备份类型
1、从物理与逻辑的角度:
数据库备份可以分为物理备份和逻辑备份。物理备份是对数据库操作系统的物理文件(如数据文件、日志文件等)的备份。这种类型的备份适用于在出现问题时需要快速恢复的大型重要数据库。
物理备份又可以分为冷备份(脱机备份)、热备份(联机备份)和温备份。
- 冷备份:在数据库关闭状态下进行备份操作;
热备份:在数据库处于运行状态时进行备份操作,该备份方法依赖数据库的日志文件;
- 温备份:数据库锁定表格(不可写入,但可读取)的状态下进行备份;
逻辑备份是对数据库逻辑组件(如表等数据库对象)的备份,表示为逻辑数据库结构(create database、create table语句)和内容(insert语句或分隔文本文件)的信息。这种类型的备份使用于可以编辑数据值或表结构较小的数据量,或者在不同的机器体系上重新创建数据。
2、从数据库的备份策略角度:
从数据库的备份策略角度,数据库的备份可分为完全备份、差异备份和增量备份。其中呢,完整备份是实现差异、增量备份的基础。
完整备份:每次对数据进行完整的备份,即对整个数据库的备份。备份与恢复的操作非常简单,但是数据存在大量的重复,会占用大量的磁盘空间,备份的时间也很长。
差异备份:备份那些自从上次完全备份之后被修改过的所有文件,备份的时间点是从上次完整备份起,备份数据会越来越大,恢复数据时,只需恢复上次的完全备份和最近的一次差异备份。
- 增量备份:只有在那些在上次完全备份或增量备份后被修改的文件才会被备份,以上次完整备份或上次增量备份的时间为时间点,仅仅备份这之间的数据变化,因而备份的数据量也小,占用空间小,备份速度快,但恢复时,需要从上一次的完整备份开始到最后一次增量备份之间的所有增量依次恢复,一旦中间的数据发生损坏,将导致数据的丢失。
三、常见的备份方法
MySQL数据库的备份可以采用很多种方式,如直接打包数据库文件(物理冷备份)、专用备份工具(mysqldump)、二进制日志增量备份、第三方工具备份等。
1、物理冷备份
物理冷备份时需要在数据库处于关闭状态下,能够较好地保证数据库的完整性。物理冷备份一般用于非核心业务,这类业务一般都允许中断,物理冷备份的特点就是速度快,恢复时也是最为简单。
2、专用备份工具mysqldump或mysqlhotcopy
mysqldump程序和mysqlhotcopy都可以做备份。mysqqldump是客户端常用逻辑备份程序,能够产生一组被执行以再现原始数据库对象定义和表数据的SQL语句。它可以转储一个到多个MySQL数据库,对其进行备份或传输到远程SQL服务器。mysqldump更为通用,因为它可以备份各种表。mysqlhotcopy仅适用于某些存储引擎。
3、通过启用二进制日志进行增量备份
MySQL支持增量备份,进行增量备份时必须启用二进制日志。二进制日志文件为用户提供复制,对执行备份点后进行的数据库更改所需的信息进行恢复。如果进行增量备份(包含自上次完全备份或增量备份以来发生的数据修改),需要刷新二进制日志。
四、数据库完全备份操作
1、备份前准备
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[root@centos01 ~]# mysqladmin -u root password <!--mysql数据库设置密码--> New password: <!--输入密码--> Confirmnewpassword: <!--确认密码--> [root@centos01 ~]# mysql -uroot -ppwd@123 <!--登录MySQL数据库--> mysql> create database benet; <!--创建benet数据库--> mysql>usebenet; <!--切换到benet数据库创建表--> mysql> create table 一班学生成绩 (姓名 char(3),班级 char(5),学号 char(8),语文 char(3), 数学char(3),英语 char(3),理综 char(3), primary key (学号)); <!--创建表,表名字为一班学生成绩,第一列名字是姓名,第二列名字为班级,第三列名字 为学号,第四列名字为语文,第五列名字为数学,第六列名字为英语,第七列名字为理综--> mysql> insert into 一班学生成绩 value ('张三','一班','20170822','110','105','92','235'); <!--表中插入数据--> mysql> insert into 一班学生成绩 value ('李四','一班','20170820','95','115','110','260'); <!--表中插入数据--> mysql> insert into 一班学生成绩 value ('王五','一班','20170818','95','103','108','270'); <!--表中插入数据--> mysql> insert into 一班学生成绩 value ('赵六','一班','20170816','100','109','112','265'); <!--表中插入数据--> mysql> select * from benet.一班学生成绩; <!--查看一班学生成绩表中所有数据--> |
2、物理冷备份与恢复
物理冷备份一般用tar命令直接打包数据库文件夹,而在进行备份之前需要使用“systemctl stop mysqld”命令关闭mysql服务。
1)备份数据库
创建一个/bak目录作为备份数据存储路径,使用tar创建备份文件。整个数据库文件夹备份属于完全备份。
1 2 3 4 5 6 |
[root@centos01 ~]# systemctl stop mysqld <!--停止mysql服务--> [root@centos01 ~]mkdir/bak/ <!--创建存储备份目录--> [root@centos01 ~]# tar zcf /bak/mysql_all-$(date+%F).mysql.gz /usr/local/mysql/data/ <!--直接tar打包数据库文件--> [root@centos01 ~]# ls /bak/ <!--查看备份的数据--> -rw-r--r-- 1 root root 766598 10月 31 03:57 /bak/mysql_all-2019-10-31.mysql.gz |
2)恢复数据库
1 2 3 4 5 6 7 8 |
[root@centos01 ~]mkdirtest <!--创建恢复数据目录--> [root@centos01 ~]# tar zxvf /bak/mysql_all-2019-10-31.mysql.gz -C ./test/ <!--解压缩备份数据到恢复目录--> [root@centos01 data]# cd /usr/local/mysql/data/ <!--进入数据原始位置--> [root@centos01 data]# rm -rf ./* <!--删除数据--> [root@centos01 ~]# cd ./test/usr/local/mysql/data/ <!--切换到恢复目录--> [root@centos01date]#mv ./* /usr/local/mysql/data/ <!--将恢复目录数据恢复到原始位置--> [root@centos01 ~]# systemctl start mysqld <!--启动mysql服务--> |
3、mysqldump备份与恢复
通过mysqldump命令可以将指定的库、表或全部的库导出为SQL脚本,便于该命令在不同版本的MySQL服务器上使用。
1)备份恢复所有数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
[root@centos01 ~]# mysqldump -uroot -ppwd@123 --opt --all-databases > ./test/benet_databases.sql <!--备份所有库,opt选项是优化执行速度--> [root@centos01 ~]# mysql -uroot -p <!--登录数据库--> Enter password: <!--数据密码--> mysql> show databases; <!--查看所有数据库--> +--------------------+ | Database | +--------------------+ | information_schema | | benet | | mysql | | performance_schema | | test | +--------------------+ mysql> drop database benet; <!--删除benet数据库--> mysql> show databases; <!--查看数据库是否删除--> +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ [root@centos01 ~]# mysql -u root -p < ./test/benet_databases.sql Enter password: <!--恢复所有数据库--> mysql> show databases; <!--查看数据库是否恢复--> +--------------------+ | Database | +--------------------+ | information_schema | | benet | | mysql | | performance_schema | | test | +--------------------+ mysql> source ./test/benet_databases.sql <!--也可以通过这种方法恢复误删除的数据库--> |
2)备份恢复数据库中的表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
[root@centos01 ~]# mysqldump -uroo t -ppwd@123 benet 一班学生成绩 > ./test/benet_一班学生成绩.sql <!--备份数据库下的表--> [root@centos01 ~]# mysql -uroot -p <!--登录数据库--> Enter password: <!--输入密码--> mysql>usebenet; <!--切换到benet数据库--> mysql> drop table 一班学生成绩; <!--删除一班学生成绩表--> mysql> show tables; <!--查看表是否删除--> Emptyset (0.00 sec) [root@centos01 ~]# mysql -uroot -p benet < ./test/benet_一班学生成绩.sql <!--恢复误删除的表--> [root@centos01 ~]# mysql -uroot -p <!--登录数据库--> Enter password: <!--输入密码--> mysql>usebenet; <!--切换到benet数据库--> Database changed mysql> show tables; <!--查看误删除的表是否恢复--> +--------------------+ | Tables_in_benet | +--------------------+ | 一班学生成绩 | +--------------------+ 1 row in set (0.00 sec) |
五、MySQL增量备份与恢复
使用mysqldump进行完全备份,备份的数据中有重复数据,备份时间与恢复时间过长。而增量备份就是备份自上一次备份之后增加或改变的文件或内容。
1、MySQL增量备份的特点
与完全备份不同,增量备份没有重复数据,备份量不大,时间短;但其恢复麻烦,需要上次完全备份及完全备份之后所有的增量备份才能恢复,而且要对所有增量备份进行逐个反推恢复。可以通过MySQL提供的二进制日志间接实现增量备份。
2、MySQL增量备份与恢复
二进制日志保存了所有更新或者可能更新数据库的操作。二进制日志在启动MySQL服务器后开始记录,并在文件达到二进制日志所设置的最大值或者接收到flush logs命令后重新创建新的日志文件,生成二进制文件序列,并及时把这些日志保存到安全的存储位置,即可完成一个时间段的增量备份。
要进行MySQL的增量备份,首先要开启二进制日志功能,开启MySQL的二进制日志功能的实现方法如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@centos01 ~]# vim /etc/my.cnf <!--进入MySQL配置文件--> ....... <!--此处省略部分内容--> log-bin=mysql-bin <!--开启二进制日志功能--> [root@centos01 ~]# systemctl restart mysqld <!--重启MySQL服务--> [root@centos01 ~]# ls -l /usr/local/mysql/data/ ...... <!--此处省略部分内容--> -rw-rw---- 1 mysql mysql 27299 10月 31 00:00 mysql-bin.000001 -rw-rw---- 1 mysql mysql 1031892 10月 31 00:00 mysql-bin.000002 -rw-rw---- 1 mysql mysql 1574 10月 31 14:13 mysql-bin.000003 -rw-rw---- 1 mysql mysql 507535 11月 1 09:37 mysql-bin.000004 -rw-rw---- 1 mysql mysql 507229 11月 1 09:40 mysql-bin.000005 -rw-rw---- 1 mysql mysql 95 11月 1 09:37 mysql-bin.index drwx------ 2 mysql mysql 4096 10月 31 00:00 performance_schema drwxr-xr-x 2 mysql mysql 20 10月 30 23:56 test |
1)增量备份
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
[root@centos01 ~]# mysqladmin -uroot -ppwd@123flush-logs <!--刷新二进制日志--> [root@centos01 ~]# ls -l /usr/local/mysql/data/ <!--查看二进制日志文件--> ...... <!--此处省略部分内容--> -rw-rw---- 1 mysql mysql 27299 10月 31 00:00 mysql-bin.000001 -rw-rw---- 1 mysql mysql 1031892 10月 31 00:00 mysql-bin.000002 -rw-rw---- 1 mysql mysql 1574 10月 31 14:13 mysql-bin.000003 -rw-rw---- 1 mysql mysql 507535 11月 1 09:37 mysql-bin.000004 -rw-rw---- 1 mysql mysql 507272 11月 1 09:49 mysql-bin.000005 -rw-rw---- 1 mysql mysql 107 11月 1 09:49 mysql-bin.000006 -rw-rw---- 1 mysql mysql 114 11月 1 09:49 mysql-bin.index drwx------ 2 mysql mysql 4096 10月 31 00:00 performance_schema drwxr-xr-x 2 mysql mysql 20 10月 30 23:56 test [root@centos01 ~]# mysql -uroot -ppwd@123 <!--登录mysql数据库--> mysql>usebenet; <!--切换到benet数据库--> mysql> insert into 一班学生成绩 value ('李宁','二班','20170824','92','98','105','235'); <!--录入新的数据--> Query OK, 1 row affected (0.01 sec) mysql> insert into 一班学生成绩 value ('陈铭','二班','20170826','111','107','96','204'); <!--录入新的数据--> Query OK, 1 row affected (0.00 sec) mysql> select *from 一班学生成绩; <!--查看新数据是否录入--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名 | 班级 | 学号 | 语文 | 数学 | 英语 | 理综 | +--------+--------+----------+--------+--------+--------+--------+ | 赵六 | 一班 | 20170816 | 100 | 109 | 112 | 265 | | 王五 | 一班 | 20170818 | 95 | 103 | 108 | 270 | | 李四 | 一班 | 20170820 | 95 | 115 | 110 | 260 | | 张三 | 一班 | 20170822 | 110 | 105 | 92 | 235 | | 李宁 | 二班 | 20170824 | 92 | 98 | 105 | 235 | | 陈铭 | 二班 | 20170826 | 111 | 107 | 96 | 204 | +--------+--------+----------+--------+--------+--------+--------+ 6 rows in set (0.00 sec) [root@centos01 ~]# mysqladmin -uroot -ppwd@123flush-logs <!--刷新二进制日志--> [root@centos01 ~]# ls -l /usr/local/mysql/data/ <!--查看二进制日志文件--> ...... <!--此处省略部分内容--> -rw-rw---- 1 mysql mysql 27299 10月 31 00:00 mysql-bin.000001 -rw-rw---- 1 mysql mysql 1031892 10月 31 00:00 mysql-bin.000002 -rw-rw---- 1 mysql mysql 1574 10月 31 14:13 mysql-bin.000003 -rw-rw---- 1 mysql mysql 507535 11月 1 09:37 mysql-bin.000004 -rw-rw---- 1 mysql mysql 507272 11月 1 09:49 mysql-bin.000005 -rw-rw---- 1 mysql mysql 649 11月 1 09:58 mysql-bin.000006 -rw-rw---- 1 mysql mysql 107 11月 1 09:58 mysql-bin.000007 -rw-rw---- 1 mysql mysql 133 11月 1 09:58 mysql-bin.index drwx------ 2 mysql mysql 4096 10月 31 00:00 performance_schema drwxr-xr-x 2 mysql mysql 20 10月 30 23:56 test [root@centos01 ~]# cp /usr/local/mysql/data/mysql-bin.000006 /root/test/ <!--复制二进制日志--> |
2)模拟误操作删除一班学生成绩表
1 2 3 4 5 |
[root@centos01 ~]# mysql -uroot -ppwd@123 -e'drop table benet.一班学生成绩;' <!--删除一班学生成绩表--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看表是否删除--> ERROR 1146 (42S02) at line 1: Table'benet.一班学生成绩'doesn't exist |
3)恢复误删除的表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
[root@centos01 ~]# mysql -uroot -ppwd@123 < ./test/benet_databases.sql <!--恢复完全备份--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看完全备份数据是否恢复--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名 | 班级 | 学号 | 语文 | 数学 | 英语 | 理综 | +--------+--------+----------+--------+--------+--------+--------+ | 赵六 | 一班 | 20170816 | 100 | 109 | 112 | 265 | | 王五 | 一班 | 20170818 | 95 | 103 | 108 | 270 | | 李四 | 一班 | 20170820 | 95 | 115 | 110 | 260 | | 张三 | 一班 | 20170822 | 110 | 105 | 92 | 235 | +--------+--------+----------+--------+--------+--------+--------+ [root@centos01 ~]# mysqlbinlog --no-defaults /root/test/mysql-bin.000006 |mysql -u root -p <!--恢复增量备份--> Enter password: <!--输入密码--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看增量恢复数据是否恢复--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名 | 班级 | 学号 | 语文 | 数学 | 英语 | 理综 | +--------+--------+----------+--------+--------+--------+--------+ | 赵六 | 一班 | 20170816 | 100 | 109 | 112 | 265 | | 王五 | 一班 | 20170818 | 95 | 103 | 108 | 270 | | 李四 | 一班 | 20170820 | 95 | 115 | 110 | 260 | | 张三 | 一班 | 20170822 | 110 | 105 | 92 | 235 | | 李宁 | 二班 | 20170824 | 92 | 98 | 105 | 235 | | 陈铭 | 二班 | 20170826 | 111 | 107 | 96 | 204 | +--------+--------+----------+--------+--------+--------+--------+ |
3、基于位置恢复
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
[root@centos01 ~]# mysql -uroot -ppwd@123 -e'drop table benet.一班学生成绩;' <!--删除一班学生成绩表--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看表是否删除--> ERROR 1146 (42S02) at line 1: Table'benet.一班学生成绩'doesn't exist [root@centos01 ~]# mysql -uroot -ppwd@123 < ./test/benet_databases.sql <!--恢复完全备份--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看完全备份是否恢复--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名 | 班级 | 学号 | 语文 | 数学 | 英语 | 理综 | +--------+--------+----------+--------+--------+--------+--------+ | 赵六 | 一班 | 20170816 | 100 | 109 | 112 | 265 | | 王五 | 一班 | 20170818 | 95 | 103 | 108 | 270 | | 李四 | 一班 | 20170820 | 95 | 115 | 110 | 260 | | 张三 | 一班 | 20170822 | 110 | 105 | 92 | 235 | +--------+--------+----------+--------+--------+--------+--------+ [root@centos01 ~]# mysqlbinlog --no-defaults /root/test/mysql-bin.000006 <!--查看二进制日志文件确认恢复的位置或时间点--> ...... <!--此处省略部分内容--> # at 176 <!--at就是我们称之为操作ID,下面紧跟的是时间标记--> #191101 9:55:33 server id 1 end_log_pos 329 Query thread_id=9 exec_time=0 error_code=0 usebenet/*!*/; SET TIMESTAMP=1572573333/*!*/; insert into 一班学生成绩 value ('李宁','二班','20170824','92','98','105','235') /*!*/; # at 329 #191101 9:55:33 server id 1 end_log_pos 356 Xid = 278 COMMIT/*!*/; # at 356 #191101 9:55:43 server id 1 end_log_pos 425 Query thread_id=9 exec_time=0 error_code=0 SET TIMESTAMP=1572573343/*!*/; BEGIN /*!*/; # at 425 <!--at就是我们称之为操作ID,下面紧跟的是时间标记--> #191101 9:55:43 server id 1 end_log_pos 579 Query thread_id=9 exec_time=0 error_code=0 SET TIMESTAMP=1572573343/*!*/; insert into 一班学生成绩 value ('陈铭','二班','20170826','111','107','96','204') /*!*/; [root@centos01 ~]# mysqlbinlog --no-defaults --stop-position='425'/root/test/mysql-bin.000006 |mysql -uroot -p <!--基于ID恢复增量备份--> Enter password: <!--输入密码--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看数据是否恢复--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名 | 班级 | 学号 | 语文 | 数学 | 英语 | 理综 | +--------+--------+----------+--------+--------+--------+--------+ | 赵六 | 一班 | 20170816 | 100 | 109 | 112 | 265 | | 王五 | 一班 | 20170818 | 95 | 103 | 108 | 270 | | 李四 | 一班 | 20170820 | 95 | 115 | 110 | 260 | | 张三 | 一班 | 20170822 | 110 | 105 | 92 | 235 | | 李宁 | 二班 | 20170824 | 92 | 98 | 105 | 235 | +--------+--------+----------+--------+--------+--------+--------+ |
上述命令中“--stop-position”指定的是停止的位置,如果仅恢复“陈铭”的信息,跳过“李宁”的信息恢复,可以使用“--start-position”选项指定开始恢复数据的位置。这时所恢复的数据是从指定位置开始直到二进制日志文件的最后。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
[root@centos01 ~]# mysql -uroot -ppwd@123 -e'drop table benet.一班学生成绩;' <!--删除一班学生成绩表--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看表是否删除--> ERROR 1146 (42S02) at line 1: Table'benet.一班学生成绩'doesn't exist [root@centos01 ~]# mysql -uroot -ppwd@123 < ./test/benet_databases.sql <!--恢复完全备份--> [root@centos01 ~]# mysqlbinlog --no-defaults --start-position='425'/root/test/mysql-bin.000006 |mysql -uroot -p <!--基于ID恢复增量备份--> Enter password: <!--输入密码--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看数据是否恢复--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名 | 班级 | 学号 | 语文 | 数学 | 英语 | 理综 | +--------+--------+----------+--------+--------+--------+--------+ | 赵六 | 一班 | 20170816 | 100 | 109 | 112 | 265 | | 王五 | 一班 | 20170818 | 95 | 103 | 108 | 270 | | 李四 | 一班 | 20170820 | 95 | 115 | 110 | 260 | | 张三 | 一班 | 20170822 | 110 | 105 | 92 | 235 | | 陈铭 | 二班 | 20170826 | 111 | 107 | 96 | 204 | +--------+--------+----------+--------+--------+--------+--------+ |
4、基于时间点恢复
基于时间点恢复数据所使用的选项是“--stop-datetime”,指定的时间同样也是查询二进制日志所得。执行一下操作可以实现仅恢复到9:55:43之前的数据,即不恢复“陈铭”的信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
[root@centos01 ~]# mysql -uroot -ppwd@123 -e'drop table benet.一班学生成绩;' <!--删除一班学生成绩表--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看表是否删除--> ERROR 1146 (42S02) at line 1: Table'benet.一班学生成绩'doesn't exist [root@centos01 ~]# mysql -uroot -ppwd@123 < ./test/benet_databases.sql <!--恢复完全备份--> [root@centos01 ~]# mysqlbinlog --no-defaults --stop-datetime='2019-11-01 9:55:43'/root/test/mysql-bin.000006 |mysql -uroot -p <!--基于时间点恢复增量备份--> Enter password: <!--输入密码--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看数据是否恢复--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名 | 班级 | 学号 | 语文 | 数学 | 英语 | 理综 | +--------+--------+----------+--------+--------+--------+--------+ | 赵六 | 一班 | 20170816 | 100 | 109 | 112 | 265 | | 王五 | 一班 | 20170818 | 95 | 103 | 108 | 270 | | 李四 | 一班 | 20170820 | 95 | 115 | 110 | 260 | | 张三 | 一班 | 20170822 | 110 | 105 | 92 | 235 | | 李宁 | 二班 | 20170824 | 92 | 98 | 105 | 235 | +--------+--------+----------+--------+--------+--------+--------+ |
执行以下操作可以实现仅恢复“陈铭”的信息,跳过“李宁”的信息恢复
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
[root@centos01 ~]# mysql -uroot -ppwd@123 -e'drop table benet.一班学生成绩;' <!--删除一班学生成绩表--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看表是否删除--> ERROR 1146 (42S02) at line 1: Table'benet.一班学生成绩'doesn't exist [root@centos01 ~]# mysql -uroot -ppwd@123 < ./test/benet_databases.sql <!--恢复完全备份--> [root@centos01 ~]# mysqlbinlog --no-defaults --start-datetime='2019-11-01 9:55:43' /root/test/mysql-bin.000006 |mysql -uroot -p <!--基于时间恢复增量备份--> Enter password: <!--输入密码--> [root@centos01 ~]# mysql -uroot -ppwd@123 -e'select * from benet.一班学生成绩;' <!--查看数据是否恢复--> +--------+--------+----------+--------+--------+--------+--------+ | 姓名 | 班级 | 学号 | 语文 | 数学 | 英语 | 理综 | +--------+--------+----------+--------+--------+--------+--------+ | 赵六 | 一班 | 20170816 | 100 | 109 | 112 | 265 | | 王五 | 一班 | 20170818 | 95 | 103 | 108 | 270 | | 李四 | 一班 | 20170820 | 95 | 115 | 110 | 260 | | 张三 | 一班 | 20170822 | 110 | 105 | 92 | 235 | | 陈铭 | 二班 | 20170826 | 111 | 107 | 96 | 204 | +--------+--------+----------+--------+--------+--------+--------+
|
1、打开SQL Server Management Studio会弹出如下界面。
第一个箭头指向的就是服务器名称,如果用ip无法连接sql时候,可以用服务器名称来连接。
验证方式选择:sql server身份验证。
然后输入数据库用户名和密码,如果能连接则表示资料填写正常,不能连接则表示用户名或密码错误。
很多客户碰到这样的问题,sql资料都填写正确了,用sql管理器连接也正常,但是网站安装时候就提示连接不上,如下图:
出现这个问题一般都是sql的Tcp/Ip协议被禁用,解决办法如下
1、打开sql配置管理器,不同sql版本稍微有点区别,如下图:
2、打开配置界面,检测Tcp/Ip协议是否启用,如下图:
左边三个菜单的Tcp/Ip协议检测是否已经启用,如果没有启用,双击右侧的Tcp/Ip开启即可。
3、开启后需要重启sql server服务才生效,重启方法,打开SQL Server Management Studio,右键点击sql服务器名字,选择重新启动,如下图
点击是后重启sql,设置生效。
今天想把公司的数据库放到自己的电脑上,结果,登录SQL server 2008R2 报错了:
用Windows身份可以登录。为了能继续使用sa用户登录,可以这样做:
1、首先用widnows身份登录
2、右键实例-->属性
3、选择【安全性】选择身份验证方式:
4、右键实例-->【重新启动】
6、选择【状态】,修改为如下设置
安装时在“服务器配置”环节出现以下问题:
为sql server代理服务提供的凭据无效
为sql server服务指定的凭据无效
为analysis services服务提供的凭据无效
为reporting services服务提供的凭据无效
为integration services服务提供的凭据无效
解决办法:
SQL Server代理 选 SYSTEM
SQL Server database engine 选 NETWORK SERVICE
SQL Serveranalysis services 选 NETWORK SERVICE
SQL Serverreporting services 选 NETWORK SERVICE
SQL Serverintegration services 选 NETWORK SERVICE
不要设置密码。
随后弹出,随意起一个“连接名”;输入“主机名/ip”这里填写mysql数据库所在服务器的ip地址,用户名密码为mysql数据库的root和密码。
mysql数据库异地备份
这样左边就可以列出数据库“连接名”的快捷方式,双击以后可以列出这个mysql里面所有的数据库,等同于“show databases”命令。如图172..16.20.69这个:
mysql数据库异地备份
“单击”选定需要备份的数据库,然后点最后一项“计划任务”有的翻译为“计画任务”。如图:
mysql数据库备份
点击创建批次处理任务
mysql数据库备份
在弹出的新窗口中“双击”可用任务中的“Backup【数据库名称】”,在下面的“选择任务”框中,就会出现选取的“Backup 【数据库名称】”也就是备份库。比如图中的wakawaka数据库
mysql数据库异地备份工具
点击"保存" ,随意输入一个文件名比如 chuxuefeng-wakawaka 。
mysql数据库异地备份工具
返回 Navicat for MySQL 窗口,打开hl2库的“计画任务”。你会看到计画任务里多了一个chuxuefeng-wakawaka,在chuxuefeng-wakawaka上点右键,选择“设置计画任务”。
mysql数据库异地自动备份
在新的窗口里选择“计划”页,新建一个计划。在高级选项里,可以勾选重复任务。
mysql数据库异地自动备份
打开高级选项,可以设定每多少小时备份一次,持续时间可以选择最大9999小时,可以设置为每天每隔3小时备份一次。实际上一般可以设定每天0:00备份一次就行了。具体的时间间隔视你的服务器情况而定。
mysql数据库异地自动备份工具
设置完计划任务之后。系统会要求你输入windows本机的administrator密码。
现在做了计划任务的数据库每隔设定的一段时间就自动备份一次,自动备份的文件名是按时间排序的,名称是按照你设定的名称来备份。如果需要恢复备份的话,!可以按时间恢复数据。
mysql数据库异地自动备份工具
如果需要恢复数据,那么双击相应的备份文件,点击“开始”就可以恢复数据。
如下图:
mysql数据库异地自动备份方法
▲备份恢复提示
mysql数据库异地自动备份方法
Windows平台下MYSQL破解root密码(忘记root密码的解决方法)
1、停止MYSQL服务,开始→运行→CMD打开DOS窗口,输入 net stop mysql
C:/Documents and Settings/skate_db>net stop mysql
MySQL 服务正在停止.
MySQL 服务已成功停止。
2、在开始→运行→CMD命令行窗口,进入MYSQL安装目录
C:/Documents and Settings/skate_db>cd C:/Program Files/MySQL/MySQL Server 5.0/bin
3、进入mysql安全模式,即当mysql起来后,不用输入密码就能进入数据库。
C:/Program Files/MySQL/MySQL Server 5.0/bin>mysqld-nt --skip-grant-tables
100423 10:27:27 [Warning] Changed limits: max_open_files: 2048 max_connections:
800 table_cache: 619
4、重新打开一个开始→运行→CMD命令行窗口,输入mysql –u root -p,使用空密码的方式登录MySQL(不用输入密码,直接按回车)
C:/Documents and Settings/skate_db>mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or /g.
Your MySQL connection id is 1 to server version: 5.0.22-community-nt
Type 'help;' or '/h' for help. Type '/c' to clear the buffer.
mysql>
5、输入以下命令开始修改root用户的密码(注意:命令中mysql.user中间有个“点”)
命令:mysql> update mysql.user set password=PASSWORD('新密码') where User='root';
mysql> update mysql.user set password=password('root') where user='root';
Query OK, 2 rows affected (0.06 sec)
Rows matched: 2 Changed: 2 Warnings: 0
6、保存配置,刷新权限表
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql>
7、退出
mysql> quit
这样MYSQL超级管理员账号ROOT已经重新设置好了,因为心在mysql还是运行在安全模式下,所以在windows的任务管理器里kill掉mysql-nt.exe 这个进程,重新启动mysql,用新设置的root密码登录。
C:/Documents and Settings/skate_db>net start mysql
MySQL 服务已经启动成功。
C:/Documents and Settings/skate_db>mysql -u root -p
Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or /g.
Your MySQL connection id is 2 to server version: 5.0.22-community-nt
Type 'help;' or '/h' for help. Type '/c' to clear the buffer.
mysql>
-----end-----
现Mysql任务调度Event不执行的时候,小编采用的方法如下:
方法一:找到当前使用的 .cnf 文件,在 [mysqld] 的下面加入如下行
event_scheduler=1 。
MySQL5.1.x 版本中引入了一项新特性 EVENT ,顾名思义就是事件、定时任务机制,在指定的时间单元内执行特定的任务,因此今后一些对数据定时性操作不再依赖外部程序,而直接使用数据库本身提供的功能。此功能是对 Oracle 的 Job/Schedule 的模仿, 5.1.X 版本以上才支持。
创建 EVENT 语法如下:
CREATE
[DEFINER = { user | CURRENT_USER }]
EVENT
[IF NOT EXISTS]
event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT ''comment'']
DO sql_statement;
schedule:
AT timestamp [+ INTERVAL interval]
| EVERY interval
[STARTS timestamp [+ INTERVAL interval]]
[ENDS timestamp [+ INTERVAL interval]]
interval:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
例如创建一个每 30 秒清空 tableA 数据的任务
CREATE EVENT E_DELETE_ASO_TOKEN ON SCHEDULE EVERY 30 SECOND DO DELETE FROM tableA ;
默认 EVENT 支持是没有启动的,可以通过下面的命令来查看状态:
Select @@event_scheduler;
如果返回 OFF ,则需要执行下面的命令启动:
SET GLOBAL event_scheduler = ON;
好了,上面虽然启动了 EVENT ,但是每次重启 mysql 之后 EVENT 并没有自动启动,那么如何让它自动启动呢?
方法一:找到当前使用的 .cnf 文件,在 [mysqld] 的下面加入如下行:
event_scheduler=1
方法二:启动 mysql 的时候增加 --event_scheduler=1
mysql start --event_scheduler=1
事件详细语法事例 (EVENT)
1> 创建事件 (CREATE EVENT)
先来看一下它的语法:
CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT ''comment'']
DO sql_statement;
schedule:
AT TIMESTAMP [+ INTERVAL INTERVAL]
| EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]
INTERVAL:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
1) 首先来看一个简单的例子来演示每秒插入一条记录到数据表
USE test;
CREATE TABLE aaa (timeline TIMESTAMP);
CREATE EVENT e_test_insert
ON SCHEDULE EVERY 1 SECOND
DO INSERT INTO test.aaa VALUES (CURRENT_TIMESTAMP);
等待 3 秒钟后,再执行查询看看:
mysql> SELECT * FROM aaa;
+---------------------+
| timeline |
+---------------------+
| 2007-07-18 20:44:26 |
| 2007-07-18 20:44:27 |
| 2007-07-18 20:44:28 |
+---------------------+
2) 5 天后清空 test 表:
CREATE EVENT e_test
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO TRUNCATE TABLE test.aaa;
3) 2007 年 7 月 20 日 12 点整清空 test 表:
CREATE EVENT e_test
ON SCHEDULE AT TIMESTAMP ''2007-07-20 12:00:00''
DO TRUNCATE TABLE test.aaa;
4) 每天定时清空 test 表:
CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
DO TRUNCATE TABLE test.aaa;
5) 5 天后开启每天定时清空 test 表:
CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO TRUNCATE TABLE test.aaa;
6) 每天定时清空 test 表, 5 天后停止执行:
CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO TRUNCATE TABLE test.aaa;
7) 5 天后开启每天定时清空 test 表,一个月后停止执行:
CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH
DO TRUNCATE TABLE test.aaa;
[ON COMPLETION [NOT] PRESERVE] 可以设置这个事件是执行一次还是持久执行,默认为 NOT PRESERVE 。
8) 每天定时清空 test 表 ( 只执行一次,任务完成后就终止该事件 ) :
CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
ON COMPLETION NOT PRESERVE
DO TRUNCATE TABLE test.aaa;
[ENABLE | DISABLE] 可是设置该事件创建后状态是否开启或关闭,默认为 ENABLE 。
[COMMENT ‘ comment ’ ] 可以给该事件加上注释。
2> 修改事件 (ALTER EVENT)
ALTER EVENT event_name
[ON SCHEDULE schedule]
[RENAME TO new_event_name]
[ON COMPLETION [NOT] PRESERVE]
[COMMENT ''comment''][ENABLE | DISABLE]
[DO sql_statement]
1) 临时关闭事件
ALTER EVENT e_test DISABLE;
2) 开启事件
ALTER EVENT e_test ENABLE;
3) 将每天清空 test 表改为 5 天清空一次:
ALTER EVENT e_test
ON SCHEDULE EVERY 5 DAY;
3> 删除事件 (DROP EVENT)
语法很简单,如下所示:
DROP EVENT [IF EXISTS] event_name
例如删除前面创建的 e_test 事件
DROP EVENT e_test;
当然前提是这个事件存在,否则会产生 ERROR 1513 (HY000): Unknown event 错误,因此最好加上 IF EXISTS
DROP EVENT IF EXISTS e_test;