首页 > 数据库 > MySQL > 正文

MySQL主从复制搭建

2024-07-24 12:36:09
字体:
来源:转载
供稿:网友
  mysql安装点击此处
 
  MySQL主从介绍
 
  MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步。
  MySQL主从是基于binlog的,主上须开启binlog才能进行主从。
 
  指定数据库同步操作:
  环境说明:需求是创建主从复制环境,要求master端只同步主库中的test库到 slave端
 
  master端IP:10.10.10.1 slave端IP:10.10.10.2
 
  主从复制条件:
 
  1.开启主库binlog功能
  2.开启主从库server-id
  3.确保主从配置文件my.cnf所有server-id不同
  4.主库建立同步的账户rep并且授权replication
  5.在主库锁表flush tables with read lock; 并查看主库上binlog文件及位置点
  show master status/G;记录下此binlog文件和位置点。
  6.在master端新开mysql窗口导出全备,恢复备份数据到从库,
  7.登录从库,CHANGE MASTER TO…..
  自动在从库生成配置文件master.info
  打开复制开关start slave;show slave status/G
  8.解锁,开放用户写入功能
 
  操作过程:
  主库my.cnf配置文件件参数:
 
  vi /etc/my.cnf
 
  server-id=1111 (和从库不同即可)
  log-bin=mysql-bin (开启binlog)
  binlog-do-db=数据库名称 (记录指定库的binlog,模式不同,记录结果不同。)
  binlog_format=mixed (设置binlog模式)
  expire_logs_days = 7 (保留7天的binlog)
  重启master端mysql
 
  centos 6:
  /etc/init.d/mysql restart
  centos 7:
  systemctl restart mysql
  从库my.cnf配置文件件参数:
 
  vim /etc/my.cnf
  server-id=2222 (从库的ID,和主库不冲突即可)
  重启slave端mysql
 
  centos 6:
  /etc/init.d/mysql restart
  centos 7:
  systemctl restart mysql
  一.master 上操作:
 
  主库建立同步的账户rep并且授权replication;在主库锁表flush tables with read lock; 并查看主库上binlog文件及位置点
 
  show master status/G;记录下此binlog文件和位置点。
  mysql -uroot -p'数据库密码' -e "grant replication slave on *.* to rep@'10.10.10.2' identified by 'rep@back123'; flush privileges;flush tables with read lock; show master status;"
  备份指定数据库数据
 
  mysqldump -uroot -p'数据库密码' -B 数据库名称 --single-transaction --events|gzip >/root/数据库名称_$(date +%F).sql.gz (输出压缩的sql文件)
 
  mysqldump -uroot -p'数据库密码' -B 数据库名称 --single-transaction --events >/root/数据库名称_$(date +%F).sql (输出sql文件)
  传输数据到slave端从库机器
 
  scp -rp -P ssh服务端口 sql文件名称 root@从库IP:/root/
 
  二.slave上操作:
 
  登陆从库:
 
  gzip -d test.sql.gz; source /root/test.sql;
  stop slave;
  reset slave all;
 
  stop slave;
  CHANGE MASTER TO
  MASTER_HOST='主库地址',
  MASTER_PORT=3306, ------->端口
  MASTER_USER='新建数据库用户',
  MASTER_PASSWORD='新建用户的密码',
  MASTER_LOG_FILE='日志文件名称',
  MASTER_LOG_POS=日志的Position值;
 
  start slave;show slave status/G;
  三.最后在master上执行解锁操作:
 
  unlock tables;
 
  到此处配置完成:
 
  在master上创建测试表测试:
 
  同步单个数据库可以在主服务器或者从服务器上配置:
 
  主服务器:
  binlog-do-db=    仅同步指定的库
  binlog-ignore-db=    忽略指定的库
 
  从服务器:
  replicate_do_db=   同步指定的库
  replicate_ignore_db=   忽略指定的库
  replicate_do_table=   同步指定的表
  replicate_ignore_table=   忽略指定的表
 
  replicate_wild_do_table= 如aming.%,支持通配符
  replicate_wild_ignore_table=
  主从过程
 
  主将更改操作记录到binlog中
  从将主的binlog事件(SQL语句)同步到本机并记录在relaylog中
  从根据relaylog里面的SQL语句按顺序执行
 
  说明: 该过程有三个线程,主上有一个log dump线程,用来和从的i/o线程传递binlog;从上有两个线程,其中i/o线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的SQL语句落地。
 
  应用环境
 
  备份重要数据
  分担主库数据读取压力。

(编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表