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> show binlog events\G;  

#备机配置:

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

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

mysql -uslave -p123456 -h 192.168.1.63  

#数据导入到备库,保证主备数据库一致性
service mysqld stop
vim /etc/my.cnf
server-id       = 2  

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

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

#如果不是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;

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

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

  1. 排错:
    #如果遇到主从不同步,看一下主从bin-log的位置,然后再同步。
    mysql> show master status;   ---主上查看
    

    #从服务器执行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地址写错了

    SQL线程出错

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

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

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

猜你喜欢

转载自blog.csdn.net/qq_30831237/article/details/85318113