6DBA, 主从同步模式

数据库管理-DBA1 课程内容总结
基础:
搭建mysql数据库服务器
建库 建表
MySQL数据类型
MySQL键   index  primary  key  foreign key
mysql存储引擎   innoddb  myisam   事务  事物特点(ACID)
                         表级锁  行级锁    读锁  写锁
管理表记录 insert   select   update  delete  匹配条件
数据的导入  导出
用户授权  权限撤销     安装图形管理工具
数据备份与恢复  mysqldump  binlog日志    innobackupex  
++++++++++++++++++++++++++++++++
数据库管理-DBA2 课程内容如下:5天
mysql主从同步
MySQL高可用集群
MySQL数据读写分离
MySQL数据分片
mysql多实例
MySQL存储过程
MySQL视图
MySQL优化

day01:  MySQL主从同步
准备学习环境 : 4台数据库服务器 50-53
                       host50    host51  host52   host53  
                      管理员登陆后删除 除系统库 之外的所有库。

配置MySQL主从同步:
什么是主从同步?                  (必须主从同步数据一样,生产环境中,主库必须先把多的数据拷贝给从库做到数据一样)
实现功能是什么(解决的是什么问题)?

 

怎么配置?

HISTCONTROL=ignorespace    (不记录敏感命令),这样会临时生效,你可以在/etc/profile中进行配置,让其永久生效

但是在敏感的命令前加一个空格执行,那么history就不会记录该条命令,

  pkill mysql   (结束进程)
主master库配置如下:
启用binlog日志文件
]# vim /etc/my.cnf
[mysqld]
server_id=51     (主库地址)

log-bin=master51  (中继日志文件)
binlog_format="mixed"  (日志功能)
:wq
]# systemctl   restart mysqld
]#ls /var/lib/mysql/master51.*

用户授权:给从库添加连接时使用的用户名
mysql> grant  replication slave  on  *.*  to repluser@"192
.168.4.52"


identified by "123qqq...A";

查看正在使用的binlog日志信息。
mysql>  show  master status;

从52slave库配置如下:
指定server_id                        (从库不需要起lbinlog日志)
[mysqld]
server_id=52   (搜索需要的地址)
:wq
]# systemctl  restart mysqld

测试主库授权用户
]# mysql -h192.168.4.51 -urepluser -p123qqq...A
mysql> quit;

管理员本机登录指定主库信息
MySQL> show  slave  status;
mysql> change master  to  

master_host="192.168.4.51",master_user="repluser",master_passw

ord="123qqq...A",master_log_file="master51.000001",master_log_p

os=452;     (设置为主从)
mysql> start  slave;
查看配置
MySQL> show  slave  status;

Slave_IO_Running: Yes
Slave_SQL_Running: Yes


排错方法:
MySQL> show  slave  status\G;
Last_IO_Error:  IO 报错信息
Last_SQL_Error: SQL报错信息

 


MySQL> show  slave  status\G;
Last_IO_Error: Got fatal error 1236 from master when reading data

from binary log: 'Could not find first log file name in binary log

index file'

mysql>stop slave;
mysql>change master to  master_log_file="master51.000001";
mysql>start slave;
MySQL> show  slave  status;

 

Last_IO_Error: Got fatal error 1236 from master when reading data

from binary log: 'Client requested master to start replication from

position > file size'


 Last_IO_Error: 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.

]# vim /var/lib/mysql/auto.cnf
]# systemctl  restart   mysqld


客户端测试主从同配置?
在master主库服务器上管理员本机登录,添加客户端存储数据时,使用的连

接用户。51机
mysql> create database gamedb;
mysql> create table  gamedb.t1(id int);

mysql> grant  select,insert  on  gamedb.* to  webadmin@"%"  (给客户机给权限)

identified by "123qqq...A";
客户端连接主库存储数据
host50 ~]# mysql -h192.168.4.51 -uwebadmin -p123qqq...A  (客户机登陆测试)
mysql> show  grants;  (查看权限)
mysql>  insert  into  gamedb.t1  values(666);
在从库管理员root本机登录,也能够看到客户端连接主库存储的数据。
]#mysql  -uroot  -p123456
mysql> select  * from gamedb.t1;     (客户机,主从都能同步)

休息到11:20

主库
master51.000001

主从同步工作原理?

master ,记录数据更改操作

2>启用binlog日志  3>设置binlog日志格式  4>设置server_id

slave 运行2个线程

slave_lO:复制master主机binlog日志文件里的sql到本机的relay-log文件里。

slave_sql:执行本机relay-log文件里的sql语句,重现master的数据操作。

 

 

基本构建思路:

1,确保数据相同(从库上要有主库上的数据)

2,配置主服务器(启用binlog日志,授权用户,查看当前正使用的日志)

3配置从服务器(设置server_id,指定主库信息)

4,测试配置(客户端库连接主库写入数据,在从库上也能查询到)
cd  /var/lib/mysql/
master.info
relay-log.info
host52-relay-bin.xxxxxx  中继日志文件

start salve;
IO线程:
SQL线程:

mysql> show   processlist;   (显示一下程序列表,任何机都可以打)
Binlog Dump

配置MySQL主从同步结构:配置主库    配置从库
主从同步工作原理:IO  SQL


如何让从库暂时不同步主库的数据。
在从库执行:  stop  slave;

如何把从库还原成独立的数据库服务器?
l]# rm  -rf master.info  relay-log.info     (删除中继文件)
[root@host52 mysql]# rm -rf host52-relay-bin.*
]# systemctl  restart  mysqld
MySQL >  show  slave status\G;

MySQL主从同步常用配置选项:

slave_log_updates
+++++++++++++++++++++++++++++++++++
三、MySQL主从同步模式:
3.1 主从同步结构模式:
一主一从
一主多从
主从从
主主结构(互为主从)


51:
启用binlog日志文件

mysql> drop user repluser@"192.168.4.52";      (删除授权用户)
mysql> grant  replication slave on  *.*                              replication(复制)
    -> to repluser@"%"
    -> identified by "123qqq...A";      (授权用户所有权可以在任何机连接本机操控本机,同步效果)

mysql>  show  master status;

]# mysqldump -uroot -p123456 gamedb >  /root/gamedb.sql   (完全备份gamedb库到gamrdb.sql文件)
]# scp /root/gamedb.sql  root@192.168.4.53:/root/                  (把备份文件传送给其他需要恢复的机)

52/53
mysql> create database  gamedb;                                          (要实现恢复原来的内容得先机建一个库)
]# mysql  -uroot  -p123456   gamedb  <    /root/gamedb.sql      (恢复删除的库原来的内容)
mysql>  select  *  from  gamedb.t1;

host53 ~]#  mysql -h192.168.4.51  -urepluser -p123qqq...A
host52 ~]#  mysql -h192.168.4.51  -urepluser -p123qqq...A

vim /etc/my.cnf
[mysqld]
server_id=52
:wq                               (生产环境都是主  主从  从)

vim /etc/my.cnf
[mysqld]
server_id=53
:wq
]# systemctl  restart mysqld                           (主从都得配)

指定主库信息
mysql> change  master  to  

master_host="192.168.4.51",master_user="repluser",master_passw

ord="123qqq...A",master_log_file="master51.000001",master_log_p

os=5164;

mysql> start  slave;
mysql> show  slave status\G;

休息到 15:35

52:  (作为主又作为从,需要改配置文件,改为主的,server_id=52
log-bin=master52
binlog_format="mixed"
mysql> change  master  to  )

master_host="192.168.4.51",master_user="yaya",master_password

="123qqq...A",master_log_file="db51.000001",master_log_pos=437

;
mysql>  start slave;
mysql >  show  slave status\G;

53:     (作为52的从)
mysql> change  master  to
    -> master_host="192.168.4.52",
    -> master_user="yaya",
    -> master_password="123qqq...A",
    -> master_log_file="master52.000001",
    -> master_log_pos=724;
mysql>  start slave;
mysql >  show  slave status\G;

休息到 16:50

主主结构:互指为主(一般和第三方软件一起用才会有意义)

log_slave_updates:级联复制

binlog_do_db=库名列表  (只允许同步的库)                        (这些选项开始就应该考虑好思路来搭配)

binlog_ignore=库名列表 (只不允许的库)

replicate_ignore_db =库名列表 (只不同步的库)

replicate_do_db=库名列表 (只允许同步的库)

relay_log=指定中继日志文件名

binlog_do_db=name(设置master对哪些库记日志)

binlog_ignore_db=name(设置master对哪些库不记日志)

主  主从  从   :51只会更新52的数据,不会更新53的数据,要想都同步需要主从52配置文件加log_slave_updates开启级联复制)

注意:生产环境做主  主从  从结构需要已开始就配置级联复制,否则会报错)   做实验如果没有先开启,需要先建好库或表就可以正常)
Last_SQL_Error: Error 'Table 'bbsdb.a' doesn't exist' on query.

Default database: ''. Query: 'insert into  bbsdb.a values(3111)'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值