MySql热备
准备服务器
主服务器的mysql版本肯定不能高于从服务器版本
例:A服务器(主服务器Master):59.151.15.36
B服务器(从服务器Slave):218.206.70.146
主服务器Master配置
进入mysql操作界面,在主服务器上为从服务器建立一个连接帐户,该帐户必须授予REPLICATION SLAVE权限。因为从mysql版本3.2以后就可以通过REPLICATION对其进行双机热备的功能操作。
操作指令如下:
mysql> grant replication slave on . to ‘replicate’@‘218.206.70.146’ identified by ‘123456’;
mysql> flush privileges;
在从服务器(Slave)上输入如下指令: 进入mysql界面则成功
[root@YD146 ~]# mysql -h59.151.15.36 -ureplicate -p123456
修改配置文件
修改主服务器mysql配置文件/etc/my.cnf
[mysqld]
server-id = 1 //唯一id
log-bin=mysql-bin //其中这两行是本来就有的,可以不用动,添加下面两行即可.指定日志文件
binlog-do-db = pwsp //记录日志的数据库
binlog-ignore-db = mysql,test //不记录日志的数据库
修改完配置文件后,保存后,重启一下mysql服务,如果成功则没问题。
查看主服务器状态
进入mysql服务后,可通过指令查看Master状态,输入如下指令:
mysql>show master status\G
Slave配置
从服务器的Slave配置,修改配置文件/etc/my.cnf
[mysqld]
server-id = 2
log-bin=mysql-bin
replicate-do-db = pwsp
replicate-ignore-db = mysql,information_schema,performance_schema
修改完配置文件后,保存后,重启一下mysql服务,如果成功则没问题。
启动Slave
用change mster 语句指定同步位置(在从服务器上执行)
mysql>stop slave; //先停步slave服务线程,这个是很重要的,如果不这样做会造成以下操作不成功。
mysql>change master to
>master_host=‘59.151.15.36’,master_user=‘replicate’,master_password=‘123456’,
> master_log_file=’ mysql-bin.000016 ',master_log_pos=107;
注:master_log_file, master_log_pos由主服务器(Master)查出的状态值中确定。也就是刚刚叫注意的。master_log_file对应File, master_log_pos对应Position。Mysql 5.x以上版本已经不支持在配置文件中指定主服务器相关选项。
遇到问题,则要重新设置slave。指令如下
mysql>stop slave;
mysql>reset slave;
无问题,则可以开启slave线程了。
mysql>start slave;
查看Slave状态
查看从服务器(Slave)状态
mysql> show slave status\G
查看下面两项值均为Yes,即表示设置从服务器成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
问题列表
如果是Slave_SQL_Running:no:
MariaDB [(none)]> stop slave;
MariaDB [(none)]> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G
如果是slave_io_running:no
1、查看主服务器
MariaDB [(none)]> show master status\G
问题所在:发现Master_Log_File没有对应。
2、在出现Slave_IO_Running: No的机器上操作
MariaDB [(none)]> slave stop;
MariaDB [(none)]>CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000026', MASTER_LOG_POS=0;
MariaDB [(none)]> slave start;
MariaDB [(none)]> show slave status\G
MySql冷备
-
查看datadir:
mysql> show variables like ‘%dir%’;
或者my.cnf里,即/var/lib/mysql/ -
打包,备份
cd /var/lib/ # 进入其上级目录
service mysql stop # 关闭mysql服务
tar jcvf ~/backup.tar.bz2 mysql/ # 打包/var/lib下的mysql目录,压缩该目录到根目录 -
恢复
执行如下命令即可:cd ~/ # 进入备份文件的保存目录
tar jxvf backup.tar.bz2 mysql/ # 解压
gunzip -r mysql/ # 递归解压
service mysql stop # 必须先关闭服务
rm -r /var/lib/mysql/ # 删除原目录
mv ~/mysql/ /var/lib/ # 把备份的文件移动到/var/lib/里面去替代原来的mysql
service mysql start # 重启mysql服务