一、备份已有数据

1、备份主库,及恢复到从库

把主库现有数据备份下来,再恢复到从库,此时两个主机的数据一致。
如果事先有数据的话,这步不能忘。

1)在主库上加锁,使只有只读权限。
mysql > flush table with read lock;
2)记住就是这个点备份的。

mysql主从复制 从库挂机如何使数据不丢失 mysql主从复制指定库_mysql

3)备份数据。
root@bogon ~]# mysqldump -uroot -p --all-databases|gzip > dump.sql.gz
4)解锁库(备份完成之后执行此步骤)
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)
5)恢复到从库
mysql> source /home/admin/dump.sql;

由于数据量非常大,所以这步执行非常耗时。

二、mysql搭建一主一从

在59和89上都安装上mysql再进行以下操作.

主从原理图:

mysql主从复制 从库挂机如何使数据不丢失 mysql主从复制指定库_主从复制_02

1.59为主,给89授权
grant replication slave on *.* to 'root'@'192.168.22.89 ' identified by 'root';

参数说明:
用户名:root 密码:root 意思是:允许192.168.22.89使用用户名为root,密码为root访问59

2.开启59的binarylog

打开my.cnf配置文件,添加一下配置:

使用命令编辑my.cnf这个配置文件: vi /etc/my.cnf

mysql主从复制 从库挂机如何使数据不丢失 mysql主从复制指定库_mysql_03

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id=59
log-bin=mysql-bin
expire_logs_days= 7
# binlog每个日志文件大小
max_binlog_size= 100m                
# binlog缓存大小
binlog_cache_size= 4m     
# 最大binlog缓存大小
max_binlog_cache_size= 512m  
# 不写这句意思是默认同步所有数据库         
binlog-do-db=401_itoo
3.设置89的my.cnf文件

mysql主从复制 从库挂机如何使数据不丢失 mysql主从复制指定库_mysql_04

log-bin=mysql-bin
binlog_format=mixed
server-id=89
# 下面这句不写意思是默认为所有数据库
replicate-do-db=401_itoo
4.查看59的binary日志位置,配置89的时候需要用到

连接上mysql,使用命令查看binary

show master status\G

mysql主从复制 从库挂机如何使数据不丢失 mysql主从复制指定库_用户名_05

File:日志名称
Position:日志偏移量
Binlog_Do_DB:记录日志的库
5.开启89的同步

在89上执行以下命令:

mysql主从复制 从库挂机如何使数据不丢失 mysql主从复制指定库_主从复制_06

HOST: 主节点ip
USER: 59授权给89的用户名
PASSWORD: 授权给89的密码
MASTER_LOG_FILE: 59的日志名称
MASTER_LOG_POS: 日志偏移量,需要和59的一样
6.查看89的slave线程是否开启

mysql主从复制 从库挂机如何使数据不丢失 mysql主从复制指定库_用户名_07

Slave_IO_Running为读取master的binaryLog的线程
Slave_SQL_Running为执行SQL的线程
(这两个线程必须都为YES才可以实现主从复制)
Seconds_Behind_Master 表示: slave的SQL线程与I/O线程的时间差。

它的作用:
通过监控 show slave status\G 命令输出的 Seconds_Behind_Master 参数的值来判断,是否有发生主从延时。其值有这么几种:

NULL — 表示io_thread或是 sql_thread 有任何一个发生故障,也就是该线程的 Running 状态是 No,而非 Yes。

0 — 该值为零,是我们极为渴望看到的情况,表示主从复制良好,可以认为 lag 不存在。

正值 — 表示主从已经出现延时,数字越大表示从库落后主库越多。

负值 — 几乎很少见,这是一个BUG值,该参数是不支持负值的,也就是不应该出现。

到此主从复制就搭建完了。