[iyunv@test ~]# /data/mysql/bin/mysql -uroot -p3306 -h127.0.0.1 -p
mysql> show variables like '%datadir%';
+---------------+--------------------+
| Variable_name | Value |
+---------------+--------------------+
| datadir | /data/mysql/data1/ |
+---------------+--------------------+
1 row in set (0.00 sec)
[iyunv@test ~]# cat /data/mysql/etc/my.cnf | grep bin-log-mysqld1
log-bin = /data/mysql/binlogs/bin-log-mysqld1
log-bin-index = /data/mysql/binlogs/bin-log-mysqld1.index
[iyunv@test ~]#
[iyunv@test binlogs]# ll bin-log-mysqld1*
-rw-rw---- 1 mysql mysql 126 Jan 22 14:03 bin-log-mysqld1.000001
-rw-rw---- 1 mysql mysql 126 Jan 22 14:04 bin-log-mysqld1.000002
-rw-rw---- 1 mysql mysql 126 Jan 22 14:10 bin-log-mysqld1.000003
-rw-rw---- 1 mysql mysql 126 Jan 22 14:19 bin-log-mysqld1.000004
-rw-rw---- 1 mysql mysql 294 Jan 23 09:45 bin-log-mysqld1.000005
-rw-rw---- 1 mysql mysql 156 Jan 23 09:47 bin-log-mysqld1.000006
-rw-rw---- 1 mysql mysql 107 Jan 23 09:47 bin-log-mysqld1.000007
-rw-rw---- 1 mysql mysql 301 Jan 23 09:47 bin-log-mysqld1.index
[iyunv@test binlogs]#
CREATE TABLE myisam_tbl(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50),
PRIMARY KEY(id)
) ENGINE=myisam DEFAULT charset=utf8;
INSERT INTO myisam_tbl(name) VALUES('a'),('aa'),('aaa'),('aaaa'),('aaaaa'),('aaaaaa');
INSERT INTO myisam_tbl(name) SELECT name FROM myisam_tbl;
#创建innodb引擎的表
1
2
3
4
5
6
7
CREATE TABLE innodb_tbl(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50),
PRIMARY KEY(id)
) engine = innodb DEFAULT charset=utf8;
# 把myisam_tbl的数据弄到innodb_tbl表
INSERT INTO innodb_tbl(name) SELECT name FROM myisam_tbl;
三、直接拷贝数据库文件(文件系统备份工具 cp),物理备份(适合小型数据库)
标准流程:锁表->刷新表到磁盘->停止服务->拷贝文件->解锁
冷备份步骤:
备份:
1.停掉 mysql 服务,在操作系统级别备份 mysql 的数据文件。
2.重启 mysql 服务,备份重启以后生成的 binlog。
恢复:
1.停掉 mysql 服务,在操作系统级别恢复 mysql 的数据文件。
2.重启 mysql 服务,使用 mysqlbinlog 恢复自备份以来的 binlog。
##在终端1
刷新并打开读锁:
1
mysql> FLUSH TABLES WITH READ LOCK;
##在终端2
创建备份目录:
1
[iyunv@test ~]# mkdir /mnt/mysql-$(date +%F)
以归档模式拷贝所有的数据文件:
1
[iyunv@test ~]# cp -a /data/mysql/data1/* /mnt/mysql-2015-01-23/
[iyunv@test ~]# /data/mysql/bin/mysql -uroot -p3306 -h127.0.0.1 -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.14-log Source distribution
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql>
恢复过程,复制完全备份的数据文件到数据目录
# \cp 转义别名,不然复制时老是提醒是否覆盖
1
[iyunv@test ~]# \cp -a /mnt/mysql-2015-01-23/* /data/mysql/data1/
[iyunv@test ~]# /data/mysql/init.d/mysqld_multi.server restart 1
[iyunv@test ~]# /data/mysql/bin/mysql -uroot -p3306 -h127.0.0.1 -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.14-log Source distribution
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mydb |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql>