数据库主从配置
主库配置
1.目录规划
根目录有三个data目录,分别是data、data1、data2
data 目录用于数据备份和备份脚本
data1 目录用于mysql数据目录
data2 目录用于binlog和relaylog目录
将相应的磁盘挂载到指定的目录下并写入/etc/rc.local 。
/bin/mount /dev/sdb1 /data
/bin/mount /dev/sdc1 /data1
/bin/mount /dev/sdd1 /data2
/usr/local/mysql5/bin/mysqld_safe --defaults-file=/usr/local/mysql5/etc/my.cnf --datadir=/home/mysql/data --user=mysql &
2.建立binlog和relaylog目录
mkdir /data2/mysql_log/binlog/ -p;
mkdir /data2/mysql_log/relaylog –p;
cd /data2;
chown –R mysql.mysql mysql_log;
ln –s /data2/mysql_log /mysql_log
3.mysql配置文件修改
######################################################################
server-id = 1
log-bin=/mysql_log/binlog/bin-log
slave-skip-errors=1062,1205
max_binlog_size = 500M
binlog_cache_size = 128K
relay-log = /mysql_log/relaylog/relaylog
log-slave-updates
expire_logs_days=3
######################################################################
4、重起mysql
关闭数据库
#mysqladmin -uroot -p shutdown
启动数据库
#/usr/local/mysql5/bin/mysqld_safe --defaults-file=/usr/local/mysql5/etc/my.cnf --datadir=/home/mysql/data --user=mysql &
5、数据库主库的授权操作
grant replication slave on *.* to 'repl'@'%' identified by '1q2w3e4r';
6、数据库全库导出
/usr/local/mysql5/bin/mysqldump --add-drop-table --add-locks --all --extended-insert --quick --no-autocommit --master-data=2 --all-databases --single-transaction --flush-logs -u root --password=1q2w3e4r > back.sql
7、手动删除bin_log日志
删除3天以前的bin_log数据
mysql> purge master logs before date_sub(now(),interval 3 day);
从库环境配置
1.目录规划
根目录有三个data目录,分别是data、data1、data2
data 目录用于数据备份和备份脚本
data1 目录用于mysql数据目录
data2 目录用于binlog和relaylog目录
将相应的磁盘挂载到指定的目录下并写入/etc/rc.local 。
/bin/mount /dev/sdb1 /data
/bin/mount /dev/sdc1 /data1
/bin/mount /dev/sdd1 /data2
/usr/local/mysql5/bin/mysqld_safe --defaults-file=/usr/local/mysql5/etc/my.cnf --datadir=/home/mysql/data --user=mysql &
2.建立binlog和relaylog目录
mkdir /data2/mysql_log/binlog/ -p;
mkdir /data2/mysql_log/relaylog –p;
cd /data2;
chown –R mysql.mysql mysql_log;
ln –s /data2/mysql_log /mysql_log
3. 修改从库的配置文件
#######################################################################
server-id = 2
#log-bin=/mysql_log/binlog/bin-log
#slave-skip-errors=1062,1205
#max_binlog_size = 500M
#binlog_cache_size = 128K
#relay-log = /mysql_log/relaylog/relaylog
#log-slave-updates
#expire_logs_days=3
#######################################################################
4、重起mysql
关闭数据库
#mysqladmin -uroot -p shutdown
启动数据库
#/usr/local/mysql5/bin/mysqld_safe --defaults-file=/usr/local/mysql5/etc/my.cnf --datadir=/home/mysql/data --user=mysql &
5. 将主库的备份文件导入到从库中
记得注释掉3中的配置文件,除了server-id。等数据导入完毕,开启注释掉的配置文件,并重新启动数据库。
#mysql -uroot -p < back.sql 将主库导出的数据导入从库
#vim back.sql 查看MASTER_LOG_FILE和MASTER_LOG_POS的位置
-- MySQL dump 10.11
--
-- Host: localhost Database:
-- ------------------------------------------------------
-- Server version 5.0.82-log
-- Position to start replication or point-in-time recovery from
-- CHANGE MASTER TO MASTER_LOG_FILE='bin-log.000021', MASTER_LOG_POS=98;
mysql> change master to master_host='Mater_IP', master_user='repl',master_password='1q2w3e4r',MASTER_LOG_FILE='bin-log.000021', MASTER_LOG_POS=98;
6、mysql > start slave; 启动slave从库
7、Mysql> show processlist;查看运行的线程
8、mysql >show slave status;查看从库同步情况
9、手动删除bin_log日志
删除3天以前的bin_log数据
mysql> purge master logs before date_sub(now(),interval 3 day);
其它注意事项:
mysql开启binlog后日志文件增长比较快,很快占满磁盘空间。我们通过以下两种方式来删除这些日志。
一、设置日志保留时长expire_logs_days自动删除
show variables like ‘%expire_logs_days%’;(查看当前日志保存天数,这个默认是0,也就是logs不过期)
set global expire_logs_days=3; (设置全局的参数,使至临时生效,数据库重新启动后,设置失效,所以需要在my.cnf中配置)
#vim my.cnf
expire_logs_days = 3
二、手动删除BINLOG (purge binary logs)
PURGE {MASTER | BINARY} LOGS TO ‘log_name’
PURGE {MASTER | BINARY} LOGS BEFORE ‘date’
例如:
PURGE MASTER LOGS TO ‘mysql-bin.010′;
PURGE MASTER LOGS BEFORE ‘2013-09-04 13:00:00′;
PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);
三、在导出与导入数据的过程中担心网络异常导致拷贝数据中断,建议这些操作在screen下进行。
screen -S name 进入screen界面
ctrl + a + d 暂时退出screen
screen -ls 查看当前screen
screen -r name 进入指定screen
pkill screen 杀死所有的会话
四、数据库导出与导出所需时间(该数据仅供参考,本次实验环境是KVM)
46GB mysql数据库 mysqldump出21GB 用时26分钟
21GB 数据导入数据库 用时04小时