天天看点

mysql主备环境搭建

#主机配置:

service mysqld stop  
           

#配置my.cnf:

vim /etc/my.cnf

log-bin=mysql-bin-master  #启用二进制日志
server-id       = 1   #本机数据库ID 标示
binlog-do-db=sdgsfpgl #可以被从服务器复制的库。二进制需要同步的数据库名
binlog-ignore-db=mysql  #不可以被从服务器复制的库
           

#重启mysql:

service mysqld restart
           

#授权:  授权从服务器,让从服务器能够通过slave账号进行复制的操作

mysql> grant replication slave on *.* to [email protected] (从)identified by "123456";  
           

#查看状态信息:

mysql> show master status;
| File                    | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------------+----------+--------------+------------------+
| mysql-bin-master.000001 |      259 | HA           | mysql            |
+-------------------------+----------+--------------+------------------+
#查看二进制日志:
ls /data/
           
mysql主备环境搭建
#主要是通过这些信息来进行数据库还原
mysql> show binlog events\G;  
           
mysql主备环境搭建

#备机配置:

mysql> show variables like '%version%';   #  --主备机的版本需要一致
           
mysql主备环境搭建

#--验证定义的slave能否登录

mysql -uslave -p123456 -h 192.168.1.63  
           
mysql主备环境搭建
#数据导入到备库,保证主备数据库一致性
service mysqld stop
vim /etc/my.cnf
server-id       = 2  
           

#从服务器ID号,不要和主ID相同 ,如果设置多个从服务器,每个从服务器必须有一个唯一的server-id值,必须与主服务器的以及其它从服务器的不相同。可以认为server-id值类似于IP地址:这些ID值能唯一识别复制服务器群集中的每个服务器实例。

#如果是mysql5.1的配置,则添加如下内容

mysql主备环境搭建
#如果不是mysql5.1,则不用添加文本框里面的内容
mysql> change master to master_host='192.168.1.63',master_user='slave',master_password='123456'; 
mysql> start slave; 
mysql> show slave status \G;
           
mysql主备环境搭建

Slave_IO_Running :一个负责与主机的io通信,如果这个故障,检查网络

Slave_SQL_Running:负责自己的slave mysql进程,如果这个故障,检查服务

  1. 排错:
    #如果遇到主从不同步,看一下主从bin-log的位置,然后再同步。
    mysql> show master status;   ---主上查看
               
    mysql主备环境搭建
    #从服务器执行MySQL命令下:
    mysql> slave stop;             #先停止slave服务
    mysql> change master to master_log_file=' mysql-bin-master.000001' ,master_log_pos= 9759;
    #根据上面主服务器的show master status的结果,进行从服务器的二进制数据库记录回归,达到同步的效果
    mysql>slave start;                      #启动从服务器同步服务
    mysql> show slave status\G;          #用show slave status\G;看一下从服务器的同步情况
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    如果都是yes,那代表已经在同步
    
    #重启从服务器,再查看状态:
    #停止从服务器
    slave stop;
    #开启从服务器
    slave start;
               

    总结排错思路:

    1、二进制日志没有开启

    2、IPTABLES 没有放开端口

    3、对应的主机 IP地址写错了

  2. 4、msyql 数据目录/data/auto.cnf中的service-uuid一直 直接删掉重新启动 (克隆msyql存在的问题)

    The slave I/O thread stops because master and slave have equal MySQL server

    SQL线程出错

    1、主从服务器数据库结构不统一

    出错后,数据少,可以手动解决创建插入,再更新slave状态。

    注:如果主上误删除了。那么从上也就误删除了。  #因此主上要定期做mysqldump备份。

继续阅读