msql数据库主从(master-slave)备份
- 格式:doc
- 大小:41.50 KB
- 文档页数:4
MySQL的Master-Slave备份步骤
一 、在master端进行操作
1.1安装数据库
sudo apt-get install mysql-server mysql-client -y
1.
2进入数据库创建new_DB01,new_DB02;
mysql -u root -prd1234
mysql> CREATE DATABASE new_DB01;
mysql> CREATE DATABASE new_DB02;
mysql> QUIT
1.
3修改mysql数据库配置文件
vi /etc/mysql/my.cnf;
#更改mysql监听地址
bind-address = 10.131.0.47
# 删除server-id log_bin 前的#号,显示如下
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
#找到#binlog_do_db= include_database_name 换行在其后添加下面代码:
binlog_do_db = new_DB01
binlog_do_db = new_DB02
(注释:new_DB01,new_DB02为需要备份的数据库,)
1.
4重启服务拾取配置文件中的更改
sudo service mysql restart
1.
5进入数据库进行授权等操作。
mysql -u root -prd1234
授予 slave_user 使用 password访问数据库的权限。
Mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;
1.6锁定数据库的表格,以便正确的导出数据
1.6.1 锁定数据库的表格
mysql> USE new_DB01;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
查询结果:
+------------------+----------+-------------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+-------------------+------------------+
| mysql-bin.000001 | 107 | new_DB01,new_DB02 | |
+------------------+----------+-------------------+------------------+
1.
6.2导出数据库存储文件
注意: 当前命令行为mysql> mysqldump 命令不能在当前执行, 退出mysql,后续还要进入数据库执行命
令,为了方便重开一个远程登陆窗口,执行下一步动作。
mysqldump -u root -p --opt new_DB01 > new_DB01.sql
pwd /home/rd
注释:记录当前目录,因为需要把这个文件拷贝到slave客户端
1.
6.3回到原来的客户端;
mysql> UNLOCK TABLES;
1.7 对要备份的数据库 new_DB02 ,执行与步骤1.6 相同的动作。
二 、在slave端进行数据库的配置。
2.1安装mysql数据库
sudo apt-get install mysql-server mysql-client -y
2.2从master端把步骤1.6产生的数据库文件拷贝到本地
scp rd@10.131.0.47:/home/rd/new_DB01.sql .
scp rd@10.131.0.47:/home/rd/new_DB02.sql .
2.3创建和master端同名数据库 new_DB01 new_DB02
mysql -u root -prd1234
mysql> CREATE DATABASE new_DB01;
mysql> CREATE DATABASE new_DB02;
mysql> QUIT;
2.4 把2.1的文件导入数据库
mysql -u root -prd1234 new_DB01 < /home/rd/new_DB01.sql
mysql -u root -prd1234 new_DB02 < /home/rd/new_DB02.sql
2.5修改mysql配置文件
vi /etc/mysql/my.cnf
#删除server-id前#号,并更改=号后面的数字,这个数字要和master端(为 1)区分,使用不同数字
server-id = 2
#换行,添加如下字段,将会异步获得 master端mysql命令日志,得到sql语句,然后在本地执行实现
同步。
relay-log = /var/log/mysql/mysql-relay-bin.log
#删除log_bin 前的#号,显示如下
log_bin = /var/log/mysql/mysql-bin.log
#找到binlog_do_db,在其后添加下面的内容
binlog_do_db = new_DB01
binlog_do_db = new_DB02
2.6 重启服务拾取配置文件中的更改
sudo service mysql restart
2.7 slave和master端建立连接进行同步
mysql -u root -prd1234
mysql> CHANGE MASTER TO MASTER_HOST='10.131.0.47',MASTER_USER='slave_user',
MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 107;
注释:MASTER_LOG_FILE='mysql-bin.000001' 、'MASTER_LOG_POS'= 107;为1.6.1 SHOW MASTER STATUS
命令查询结果。
2.8 Activate the slave server:
mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G
查询结果如下说明设置成功:
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.131.0.47
Master_User: slave_user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 107
Relay_Log_File: mysqld-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Connecting
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 107
Relay_Log_Space: 107
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 0
1 row in set (0.00 sec)