MYSQL主从备份优化版(成功案例)与个别报错处理

主服务器操作:

开启 MySQL 服务并新建一个测试数据库
abc:

mysql> create database abc;   
Query OK, 1 row affected (0.31 sec)  

##创建一个用来同步的用户,指定只能在
192.168.1.102 登录  

mysql> grant replication slave on *.*
to 'tongbu'@'192.168.1.102'
identified by '123456quanlian';


修改配置文件:
root@camlit ~: vi /etc/my.cnf
备注:在修改配置文件之前做好该文件
份工作。
[mysqld]   
datadir=/usr/local/mysql/var
socket=/tmp/mysql.sock
user=mysql   
old_passwords=123456quanlian     
##增加下面内容  
server_id=1###1 表示 master, 2 表示
slave   binlog-do-db=abc ###需要同步
数据库,如果有多个数据库,每个数据库一
binlog-ignore-db=mysql###不需要同步
数据库 log-bin=mysql-bin      
[mysqld_safe]  ############可不用   
log-error=/var/log/mysqld.log   
pid-file=/var/run/mysqld/mysqld.pid
重启服务:
root@camlit ~:/etc/init.d/mysqld
restart  

最后
验证:
mysql> use abc;
mysql> create table test1 (IP
VARCHAR(20),USER VARCHAR(100), MAIL
VARCHAR(100));  

然后在从服务器看能否已更新。

mysql> use abc;

mysql> show tables;   
+---------------+   
| Tables_in_abc |   
+---------------+   
| test1 |   
+---------------+  






从服务器操作:


2.2.2  Slave 端设置
和 master 端一样创建一个相同的数据库:
abc

修改配置文件:
root@test2 ~: vi /etc/my.cnf
[mysqld]   
datadir=/usr/local/mysql/var
socket=/tmp/mysql.sock   
user=mysql   
old_passwords=123456quanlian     
###增加下面内容  
server_id=2   log-bin=mysql-bin
master-host=192.168.1.104  master-
user=tongbu   master-password=123456quanlian
master-port=3306   master-connect-
retry=10  ###连接次数  replicate-do-
db=abc   ###接受的数据库名  replicate
ignore-db=mysql  ###不要接受的数据库
[mysqld_safe]   ####可不用
log-error=/var/log/mysqld.log   
pid-file=/var/run/mysqld/mysqld.pid  
重启服务:servie mysqld restart




回到主服务器:
 mysql > show master status;

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000088 |      385 | abc          | mysql            |
+------------------+----------+--------------+------------------+

回到从服务器:

mysql>stop slave;

mysql>change master to master_log_file='mysql-bin.000088 ',master_log_pos=385;

mysql>slave start;

mysql>show slave status\G

Slave_IO_Running: Yes
Slave_SQL_Running: Yes


自身修改后的参考文件:


主服务器缺少的动作:

Show master status;

 

从服务器缺少的动作:

mysql>stop slave;

 

代码:

mysql>change master to master_log_file='mysql-bin.000019',master_log_pos=11809679

 

代码:

mysql>slave start;

 

 

 

排错:

重新添加需要备份的数据库,在主服务器/etc/my.cnf下

在从服务器的/etc/my.cnf下:

 

问题:

mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: No
Last_Errno: 1062

 

原因:
1.程序可能在slave上进行了写操作
2.也可能是slave机器重起后,事务回滚造成的.

解决办法I:
1.首先停掉Slave服务:slave stop

2.到主服务器上查看主机状态:
记录File和Position对应的值。
mysql> show master status;
+------------------+-----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-----------+--------------+------------------+
| mysql-bin.000020 | 135617781 | | |
+------------------+-----------+--------------+------------------+
1 row in set (0.00 sec)

3.到slave服务器上执行手动同步:

复制代码 代码如下:


mysql> change master to
> master_host='master_ip',
> master_user='user',
> master_password='pwd',
> master_port=3307,
> master_log_file='mysql-bin.000020',
> master_log_pos=135617781;


1 row in set (0.00 sec)
mysql> slave start;
1 row in set (0.00 sec)
再次查看slave状态发现:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...
Seconds_Behind_Master: 0

解决办法II:
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值