bjghzly 发表于 2018-10-5 13:37:40

部署mysql主从同步

  部署mysql主从同步
  一、什么是mysql主从同步
  主:正在被客户端访问的数据库服务器,被称作主库服务器。
  从:自动同步主库上的数据的数据库服务器,被称作从库服务器。
  二、配置mysql主从同步
  2.1 拓扑图
  数据库服务器 192.168.4.51做主库
  数据库服务器 192.168.4.52做从库
  2.2环境准备
  主从同步未配置之前,要保证从库上要有主库上的数据。
  禁用selinux    ]#setenforce0
  关闭防火墙服务]# systemctlstop firewalld
  物理连接正常 ]#ping   -c   2   192.168.4.51/52
  数据库正常运行,管理可以从本机登录
  2.3 配置mysql主从同步
  +++2.3.1 配置主库
  a 创建用户授权
  b 启用binlog日志
  c 查看正在使用binlog日志信息
  +++.3.2配置从库
  a 验证主库的用户授权
  b 指定server_id
  c 数据库管理员本机登录,指定主数据库服务器的信息
  mysql> changemasterto
  -> master_host="主库ip地址",
  -> master_user="主库授权用户名",
  -> master_password="授权用户密码",
  -> master_log_file="主库binlog日志文件名",
  -> master_log_pos=binlog日志文件偏移量;
  d 启动slave进程
  e 查看进程状态信息
  相关命令
  mysql> showslavestatus;# 显示从库状态信息
  mysql> show master status;#显示本机的binlog日志文件信息
  mysql> showprocesslist;#查看当前数据库服务器上正在执行的程序
  mysql> startslave ; #启动slave 进程
  mysql> stopslave ; #停止slave 进程
  2.4 在客户端测试主从同步配置
  2.4.1在主库服务器上添加访问数据时,使用连接用户
  2.4.2客户端使用主库的授权用户,连接主库服务器,建库表插入记录
  2.4.3在从库本机,使用管理登录查看是否有和主库一样库表记录及授权用户
  2.4.4 客户端使用主库的授权用户,连接从库服务器,也可以看到新建的库表及记录
  +++++++++++++++++++++++++++++++
  三、mysql主从同步的工作原理
  从库数据库目录下的文件:
  master.info记录主库信息
  主机名-relay-bin.XXXXXX中继日志文件,记录主库上执行过的sql命令
  主机名-relay-bin.index 索引文件,记录当前已有的中继日志文件
  relay-log.info中继日志文件,记录当前使用的中继日志信息
  从库IO线程 和SQL线程的作用?
  IO线程把主库binlog日志里的sql命令记录到本机的中继日志文件
  SQL线程执行本机中继日志文件里的sql命令,把数据写进本机。
  IO线程报错原因: 从库连接主库失败(ping   grant   firewalldselinux)
  从库指定主库的日志信息错误(日志名   偏移量)
  Last_IO_Error: 报错信息
  修改步骤:
  mysql> stopslave;
  mysql>changemasterto   选项="值";
  mysql> startslave;
  SQL线程报错原因: 执行本机中继日志文件里的sql命令,用到库或表在本机不存在。
  Last_SQL_Error: 报错信息
  设置从库暂时不同步主库的数据?
  在从库上把slave 进程停止
  mysql> stopslave;
  把从库恢复成独立的数据库服务器?
  ]# rm -rf/var/lib/mysql/master.info
  ]# systemctlrestart mysqld

  ]# rm-rf   主机名-relay-bin.XXXXXX   主机名-relay-bin.index>  四、mysql主从同步结构模式
  一主一从
  一主多从
  主从从
  主主结构(又称作互为主从)
  五、mysql主从同步常用配置参数
  主库服务器在配置文件my.cnf 使用的参数
  ]#vim /etc/my.cnf
  
  binlog_do_db=库名列表   #只允许同步库Binlog_Ignore_DB=库名列表    #只不允许同步库
  ]#systemctlrestartmysqld
  从库服务器在配置文件my.cnf 使用的参数
  ]# vim /etc/my.cnf
  
  log_slave_updates
  #级联复制
  relay_log=中继日志文件名
  replicate_do_db=库名列表   #只同步的库
  replicate_ignore_db=库名列表   #只不同步的库
  :wq
  ]#systemctlrestartmysqld
  配置mysql主从从结构
  主库192.168.4.51
  从库192.168.4.52 ( 做51主机从库)
  从库192.168.4.53 ( 做53主机从库)
  要求:客户端访问主库51 时 创建库表记录 在52 和53 数据库服务器都可以看到
  配置步骤:
  一、环境准备
  主从同步未配置之前,要保证从库上要有主库上的数据。
  禁用selinux    ]#setenforce0
  关闭防火墙服务]# systemctlstop firewalld
  物理连接正常 ]#ping   -c   2   192.168.4.51/52
  数据库正常运行,管理可以从本机登录
  二、配置主从同步
  2.1 配置主库51
  用户授权
  启用binlog日志
  查看正在使用的日志信息
  2.2 配置从库52
  用户授权
  启用binlog日志,指定server_id和 允许级联复制
  查看正在使用的日志信息
  验证主库的授权用户
  管理员登录指定主库信息
  启动slave进程
  查看进程状态信息
  2.3配置从库53
  验证主库的授权用户
  指定server_id
  管理员登录指定主库信息
  启动slave进程
  查看进程状态信息
  三、客户端验证配置
  3.1 在主库上授权访问gamedb库的用户
  3.2 客户端使用授权用户连接主库,建库、表、插入记录
  3.3 客户端使用授权用户连接2台从库时,也可以看到主库上新的库表记录
  六、mysql主从同步复制模式
  异步复制
  全同步复制
  半同步复制
  查看是否可以动态加载模块
  mysql> show variables like"have_dynamic_loading";
  主库安装的模块
  mysql> INSTALL PLUGIN rpl_semi_sync_masterSONAME 'semisync_master.so';
  从库安装的模块
  mysql>INSTALL PLUGIN rpl_semi_sync_slaveSONAME 'semisync_slave.so';
  查看系统库下的表,模块是否安装成功
  mysql>
  SELECT   PLUGIN_NAME ,PLUGIN_STATUS
  FROM   INFORMATION_SCHEMA.PLUGINS
  WHERE
  PLUGIN_NAMELIKE   '%semi%';
  启用半同步复制模式
  主库
  mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
  从库
  mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;
  查看半同步复制模式是否启用
  mysql>showvariableslike"rpl_semisync%_enabled";
  修改配置文件/etc/my.cnf 让安装模块和启用的模式永久生效。
  主库
  vim /etc/my.cnf
  
  plugin-load=rpl_semi_sync_master=semisync_master.so
  rpl_semi_sync_master_enabled=1
  :wq
  从库
  vim /etc/my.cnf
  
  plugin-load=rpl_semi_sync_slave=semisync_slave.so
  rpl_semi_sync_slave_enabled=1
  :wq
  既做主又做从
  vim /etc/my.cnf
  
  plugin-load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
  rpl-semi-sync-master-enabled = 1
  rpl-semi-sync-slave-enabled = 1
  :wq

页: [1]
查看完整版本: 部署mysql主从同步