xinhu1300 发表于 2018-9-29 07:04:51

mysql如何主从同步?

  一、使用完全备份文件恢复单个表----innobackupex
  --apply-log    --export导出表信息   .exp.cfg
  discardtablespace删除表空间          .ibd
  importtablespace 导入表空间
  /gamedb
  drop tablet1;
  1 按照源表结构创建表t1createtablet1(id int);
  2 从备份文件里导出表信息
  #innobackup--userroot--password abc123--databases="库名列表"
  --apply-log    --export/gamedbbak
  3 删除表空间

  mysql>>  4 把导出的表信息 拷贝的对应的数据库目录下
  #cd/gamedbbak/gamedb
  #cpt1.{exp,ibd,cfg}/var/lib/mysql/gamedb/
  #ls /var/lib/mysql/gamedb/t1.
  #chownmysql:myql   /var/lib/mysql/gamedb/t1.

  5 导入表空间 >  6select fromt1;
  +++++++++++++++++++++++++++++++++++++++
  二、主从同步
  2.1 什么是主从同步: 让其他的数据库服务器自动同步正在提供服务的数据库服务器上 的数据。
  2.2 配置mysql主从同步结构
  主数据库服务器的配置:

  1 添加授权用户   grantreplication   slaveon.*to slaveuser@"192.168.4.12" >  2 启用binlog日志
  3 重启数据库服务
  4 查看日志信息 mysql> showmaster status;
  从数据库服务器的配置:
  1 验证主库提供的授权用户
  2 修改配置文件指定server_id并重启数据库服务
  3 使用本机的数据库管理员登录,指定主库信息。
  mysql> showslave status;
  mysql> change mastertomaster_host="192.168.4.11",
  master_user="slaveuser",
  master_password="123456",
  master_log_file="master11.000001",
  master_log_pos=154;
  mysql>startslave;
  mysql>showslave status\G;
  slave_IO_Running: Yes
  slave_SQL_Running: Yes
  测试主从同步配置:
  1 在主库服务器上添加访问数据的用户
  2 在客户端使用授权用户连接主库,产生的数据在从库本机也能够查看的到。
  +++++++++++++++++++++++++++++++++
  从数据库目录下多出文件
  master.info
  主机名-relay-bin.000000中继日志文件
  主机名-relay-bin.index
  relay-log.info
  ++++++++++++++++++++++++++
  主从同步工作原理
  mysql> stopslave ;
  mysql> changemasterto选项=“值”;
  mysql> start slave;
  ++++++++++++++++++++++++++++++++++++
  主从同步结构模式
  一主一从
  一主多从
  主从从
  主主结构(互为主从)
  +++++++++++++++++++++++++++++++++++
  主从同步常用配置参数:
  #vim /etc/my.cnf
  
  选项=值
  :wq
  #systemctl restart
  主库配置文件里(对应所有的从都有效)
  只允许同步的库 binlog_do_db=库名1,库名2,库名n
  不允许同步的库 binlog_ignore_db=库名1,库名2,库名n
  从库配置文件里(只对本机有效)
  只同步的库replicate_do_db=库名1,库名2,库名n
  只不同步的库 replicate_ignore_db=库名1,库名2,库名n
  级联复制log_slave_updates
  +++++++++++++++++++++++++++++++++++
  三、数据读写分离   maxscale软件 +一主一从
  3.1 什么读写分离:把客户端访问数据时的查询请求select 和写insert 给不同的数据库服务器处理。
  

         client 254 mysql-h192.168.4.15-uyaya99-p123456  |
  15
  代理主机---> systemctl stop mysqld
  |
  

  

      |                        |  

  192.168.4.11      192.168.4.12
  写                        读
  主                        从
  1 配置一主一从结构
  2 配置代理主机
  2.1
  a 装包
  b 、修改配置文件:
  指定数据库服务器、指定监控的数据库服务器 ,指定读写在那些主机之间执行、
  定义管理服务 、读写分离服务使用的端口、管理服务使用的端口
  4006                           4009
  c、根据配置文件设置,在数据库服务器上添加对应的授权用户

  grantreplication slave ,replication clienton.to   scalemon@"%" >
  grantselecton   mysql.*    to   maxscale@"%" >  d、在代理主机上测试授权用户
  #whichmysql
  #yum-y install mariadb
  #mysql-h192.168.4.11-uscalemon-p123456
  #mysql-h192.168.4.11-umaxscale-p123456
  #mysql-h192.168.4.12-uscalemon-p123456
  #mysql-h192.168.4.12-umaxscale-p123456
  e、启动服务
  #maxscale-f/etc/maxscale.cnf( 停止服务 pkill-9 maxscale)
  #netstat-utnalp| grep maxscale
  2.2 测试配置
  A\ 在代理服务器本机访问管理服务
  15#maxadmin-uadmin-pmariadb-P4009
  maxscale> listservers
  B 在客户端254主机 访问代理服务器存储数据或查询数据
  #which mysql
  #yum-yinstall mariadb
  #mysql -h192.168.4.15-P4006-uyaya99-p123456
  ++++++++++++++++++++++++++++++++++++
  四、mysql服务的优化
  五mysql高可以集群 (mysql-mmm+ 主从同步)11-14   15
  #yum-yinstallperl-*


页: [1]
查看完整版本: mysql如何主从同步?