当前位置:Gxlcms > 数据库问题 > Mysql主从复制

Mysql主从复制

时间:2021-07-01 10:21:17 帮助过:16人阅读

Mysql环境准备

  1. <code>#下载Mysql
  2. wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
  3. 如果报错: -bash: wget: 未找到命令
  4. 安装插件 yum -y install wget
  5. 安装mysql-community-release-el7-5.noarch.rpm
  6. sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
  7. 安装Mysql
  8. sudo yum install mysql-server
  9. 一直y下去就可以了</code>

技术图片
配置Mysql

  1. <code>mysql -u root</code>

报错。原因:原因是/var/lib/mysql的访问权限问题。
技术图片

  1. <code>#授权
  2. chown root /var/lib/mysql/
  3. #重启
  4. service mysqld restart
  5. #再次登录并修改密码
  6. mysql -u root
  7. use mysql;
  8. update user set password=password('123456') where user='root';
  9. exit;
  10. #再次重启,授权root可以远程连接
  11. service mysqld restart
  12. GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";
  13. service mysqld restart</code>

Mysql主从复制原理

==MySQL的主从复制是MySQL本身自带的一个功能,不需要额外的第三方软件就可以实现。其复制功能并不是copy文件来实现的,而是借助binlog日志文件里面的SQL命令实现的主从复制,可以理解为我在Master端执行了一条SQL命令,那么在Salve端同样会执行一遍,从而达到主从复制的效果。从库生成两个线程,一个1/0线程、一.个SQL线程。i/o线程去请求主库的binlog,并将得到的binlog日志写到relay log (中继日志)文件中。主库会生成一个log dump线程,用来给从库i/o线程传binlog;SQL线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致。==

主从复制搭建

配置主节点

  1. <code>vi /etc/my.cnf
  2. server_id=131 ###服务器id
  3. log-bin=mysql-bin ###开启日志文件
  4. #保存之后重启
  5. service mysqld restart</code>

技术图片

  1. <code>#查询对应配置文件中的server_id 说明已经配置成功
  2. show variables like '%server_id%';
  3. #看到同步的文件,和行数 说明已经配置成功。
  4. show master status;</code>

技术图片
技术图片
从节点配置

  1. <code>vi /etc/my.cnf
  2. server_id=132 ###从服务器server_id
  3. log-bin=mysql-bin ###日志文件同步方式
  4. binlog_do_db=test,test1 ###同步数据库,多个以逗号分隔
  5. service mysqld restart</code>

技术图片
从节点同步主节点

  1. <code>master_host:主节点IP
  2. master_user :主节点账号
  3. master_password:密码
  4. #这两个参数的配置是在主节点通过show master status;查询到的
  5. master_log_file
  6. master_log_pos
  7. #执行sql
  8. CHANGE MASTER TO master_host = '192.168.100.131',
  9. master_user = 'root',
  10. master_password = 'root',
  11. master_log_file = 'mysql-bin.000001',
  12. master_log_pos = 120;
  13. 因为从节点的服务器是直接复制的主节点,所有可能会出现一个错误
  14. Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.。是因为UUID重复了.删除子节点的auto.cnf就可以了
  15. 解决办法:
  16. #找到Mysql的位置
  17. cat /etc/my.cnf
  18. cd /var/lib/mysql
  19. rm -rf auto.cnf
  20. service mysqld restart</code>

技术图片
技术图片

  1. <code>#开始同步
  2. start slave
  3. #查看同步状态
  4. SHOW SLAVE STATUS</code>

技术图片

效果演示

在主节点创建test数据库,在创建一个表,子节点会自动同步
技术图片
刷新一下从节点
技术图片
技术图片

Mysql主从复制

标签:插入图片   执行sql   log-bin   ESS   res   sha   安装   shadow   erro   

人气教程排行