前言:
现时看官们对“mysql建库用户”大概比较重视,看官们都需要剖析一些“mysql建库用户”的相关内容。那么小编也在网摘上搜集了一些关于“mysql建库用户””的相关知识,希望咱们能喜欢,看官们一起来学习一下吧!一、什么是mysql主从同步
指具有2台或2台以上的数据库服务器,一台作为主数据库服务器,其他作为从数据库服务器。
主:正在被客户端访问的数据库服务器,被称作主库服务器。
从:自动同步主库上的数据的数据库服务器,被称作从库服务器。
作用:实现数据的自动备份
二、配置mysql主从同步(]#为在系统下执行命令,mysql>为在数据库模式下执行)
2.1环境准备:
1)数据库服务器 192.168.4.51 做主库
2)数据库服务器 192.168.4.52 做从库
3)禁用selinux
4)关闭防火墙服务
5)数据库正常运行,两台数据库服务器均可以从本机登录
6)2台服务器能互相通信(ping通)
7)从库上必须包含主库的数据,防止同步时出错
2.2配置主从同步
1)配置主库:
a.数据库模式下创建授权用户:
mysql> grant replication slave on *.*
-> to
-> repluser@"192.168.4.52"
-> identified by "123456";
b.通过配置文件启用binlog日志并重启服务
]# vim /etc/my.cnf
[mysqld]
server_id=51
log-bin=master51
binlog-format="mixed"
]# systemctl restart mysqld
]# ls /var/lib/mysql/master51.*
/var/lib/mysql/master51.000001 /var/lib/mysql/master51.index
c. 查看正在使用binlog日志信息
]#mysql -uroot -p123456
mysql> show master status;
d 相关命令
mysql> reset master;
//重置binlog日志,删除日志索引文件中记录的所有binlog日志并创建一个新的日志文件,起始值从000001开始,此命令不能用于有任何slave正在运行的主从关系的主库,因为在slave运行时刻reset master命令不被支持,用于第一次搭建主从数据库时,初始化binlog操作或没有搭建主从的情况下用于清理binlog文件;
2)配置从库
a 验证主库的用户授权
]# mysql -h192.168.4.51 -urepluser -p123456
mysql> show grants;
mysql> quit;
b 修改配置文件指定server_id并重启服务
]# vim /etc/my.cnf
[mysqld]
server_id=52
]# systemctl restart mysqld
c数据库管理员本机登录,指定主数据库服务器的信息
]#mysql -uroot -p123456
mysql> change master to
-> master_host="192.168.4.51",
-> master_user="repluser",
-> master_password="123456",
-> master_log_file="master51.000001", //值为主库正在使用的日志信息,不能照抄
-> master_log_pos=154; //值为日志信息当前记录到的偏移量,同样需要通过主库查看,不能照抄
d 启动slave进程
mysql> start slave;
e查看进程状态信息(保证IO与SQL运行状态为yes)
mysql> show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
f常用相关命令
mysql> show slave status; # 显示从库状态信息
mysql> show master status; #显示本机的binlog日志文件信息
mysql> show processlist; #查看当前数据库服务器上正在执行的程序
mysql> start slave ; #启动slave 进程
mysql> stop slave ; #停止slave 进程
3)在客户端测试主从同步配置
a 在主库服务器上添加访问数据时,使用连接用户
]# mysql -uroot -p123456
mysql> grant all on bbsdb.* to webadmin@"%" identified by "123456";
mysql>select user,host from mysql.user where user="webadmin";
mysql> quit;
b 客户端使用主库的授权用户,连接主库服务器,建库表插入记录
]# mysql -h192.168.4.51 -uwebadmin -p123456
mysql> 建库 建表 插入记录
c 在从库本机,使用管理登录查看是否有和主库一样库表记录及授权用户
]# mysql -uroot -p123456
mysql> select * from 库.表;
d 客户端使用主库的授权用户,连接从库服务器,也可以看到新建的库表及记录
]# mysql -h192.168.4.52 -uwebadmin -p123456
mysql> select * from 库.表;
三、主从同步工作原理
3.1原理解释
1)首先主库开启了binlog日志功能,当主库执行sql指令时,会被记录到binlog日志;
2)其次主库授权从库指定用户具有同步主库数据的权限(即从主服务器读取二进制日志的权限replication slave),因此从库可以查看主库的binlog日志;
3)当搭建了主从同步之后,从数据库会产生2个线程,分别是I/O线程以及sql线程以便同步主库的操作;
4)I/O线程会将主数据库的binlog日志的内容复制到数据库目录下的中继日志relay_log里;
5)然后sql线程会将中继日志里所记录的sql指令进行执行,使得从数据库将执行与主数据库相同的操作,最终实现主数据库的数据与从数据库的数据相同。
3.2从库数据库目录下的解释:
搭建主从同步后,从库数据库目录下会有如下文件:
1)master.info 记录主库信息
2)主机名-relay-bin.XXXXX 中继日志文件,记录主库上执行过的sql命令
3)主机名-relay-index 索引文件,记录当前已有的中继日志信息
4)relay-log.info 中继日志文件,记录当前使用的中继日志信息
ps:要想把从库恢复成独立的数据库服务器,只需要停止服务后把以上文件删除再重启服务即可。
3.3配置文件内容解释
主库配置文件:
server_id=51 //指定主库的服务器id号
log-bin=master51 //启用binlog日志,并将日志名设为master51开头,日志名可省略
binlog-format="mixed" //设置binlog日志记录格式为mixed
从库配置文件:
server_id=52 //指定主库的服务器id号
3.4 步骤及思路小结
1)由于同步只能同步搭建后的数据,因此构建主从同步之前要确保数据相同,即从库必须要有主库上的数据;
2)为了能够同步主库的数据,需要授权用户具有查看binlog日志权限并复制到中继日志上;
3)从库指定主库信息时,要从主库上查看当前使用的binlog日志信息。
4)怎么才知道主库的日志改变了呢 ?
在主库上有名为binlogdump的程序告诉从库有新的命令记录到数据库里了,你要去提取。
5)replication slave 为全局权限,不能指定范围,只能*.*,除非修改主从库运行时的配置参数
3.5常见报错原因
1)IO线程报错原因: 从库连接主库失败(ping grant firewalld selinux)
从库指定主库的日志信息错误(日志名 偏移量)
Last_IO_Error: 报错信息
修改步骤:
mysql> stop slave;
mysql> change master to 选项="值";
mysql> start slave;
2)SQL线程报错原因: 执行本机中继日志文件里的sql命令,用到库或表在本机不存在。
Last_SQL_Error: 报错信息
改错原理:从库上修改,主库不会变
改错方法:
让当前从库临时不同步主库:
在从库上将slave停掉;stop slave;
重新开启会将之前的数据同步回来
3)其他相关:配置主从数据库,数据库的uuid值不可以一样,可以手动改auto.cnf文件,保持长度不变,改一下值再重启;
3.6其他相关的常用配置文件参数
1)适用于主库master服务器
binlog_do_db=库名 //设置master对哪些库记日志
binlog_ingore_db=库名 //设置master对哪些库不记
2)适用于从库slave服务器
log_slave_updates //记录从库更新,允许链式复制(多用于主从从结构),即使从库开启了binlog日志模式,默认从库执行中继日志的sql命令也不会记录到从库的binlog日志下;
relay_log=dbsvr2-relay-bin //指定中继日志文件名
replicate_do_db=mysql //仅复制指定的库,其他库将被忽略,此选项可设置多条,省略时默认为所有库;
replicate_ignore_db=test //不复制哪些库,其他库将被复制,此选项与do_db只需选用其中一种;
3)选项设置在主库与从库的区别
若设置在主库,设置则对所有的从库生效;
若设置在从库,则设置只对当前的从库生效;
主要体现在一主多从结构。
四、mysql主从同步结构模式
4.1基本模式:
单向复制:主-->从
缺点:单点故障,从库坏了就停止备份数据了
4.2 扩展模式:
链式复制:主-->从-->从 (第一个从库同时兼为第二个从库的主库)
优点:主库坏了,还有备用的主库进行接替,缺点同单向复制,有单点故障
双向复制:主<-->从 (互为主从)
放射式复制:一主多从(一个主库下接多个从库)
优点:解决了单向复制的单点故障问题
4.3配置主从从结构
步骤同主从同步一样,只需要在既做主库又做从库的服务器配置文件上开启binlog日志并添加log_slave_updates
4.4主主结构(互为主从)用途:客户端访问51时,52为从库;客户端访问52时,51为从库;生产环境下一般不单独用,防止51,52被同时访问导致不可用,多与第三方软件一起用于部署高可用集群,
五、mysql复制模式
5.1模式分类
1)异步复制:主库在执行完客户端提交的事务后会立即将结果返回给客户端,并不关心从库是否已经接收并处理
2)全同步复制:当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端
3)半同步复制:介于异步复制和全同步复制之间,主客在执行完客户端提交的事务后不时立刻返回给客户端,而是等待至少一个从库接收到并写道relay log中才返回给客户端。
5.2配置半同步复制
临时配置:
查看是否可以动态加载模块
mysql> show variables like "have_dynamic_loading";
主库安装的模块
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
从库安装的模块
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
查看系统库下的表,模块是否安装成功
mysql>
SELECT PLUGIN_NAME , PLUGIN_STATUS
FROM INFORMATION_SCHEMA.PLUGINS
WHERE
PLUGIN_NAME LIKE '%semi%';
启用半同步复制模式
主库
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
从库
mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;
查看半同步复制模式是否启用
mysql> show variables like "rpl_semi_sync_%_enabled";
永久配置:
主库
vim /etc/my.cnf
[mysqld]
plugin-load=rpl_semi_sync_master=semisync_master.so //加载插件
rpl_semi_sync_master_enabled=1 //启用模块
从库
vim /etc/my.cnf
[mysqld]
plugin-load=rpl_semi_sync_slave=semisync_slave.so
rpl_semi_sync_slave_enabled=1
当数据库既做主又做从库时,配置如下:
vim /etc/my.cnf
[mysqld]
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