1.主从复制及主主复制的实现
1.1 主从复制
主
从
测试
1.2 主主复制
主
从
主
测试
同时插入数据
同时创建数据库(示例是报错,我这不知道为何没报错,数据库版本Mariadb10.3.28)
2.xtrabackup实现全量+增量+binlog恢复库
安装
在源主机做完全备份到/backup
第一次修改数据
第一次增量备份
查看第一次备份相关文件
第二次修改数据
第二次增量备份
查看第二次备份相关文件
将备份传输到还原主机上
还原过程
1)预准备完成备份,此选项–apply-log-only 阻止回滚未完成的事务
2)合并第1次增量备份到完全备份
3)合并第2次增量备份到完全备份;最后一次还原不需要加选项–apply-log-only
4)复制到数据库目录,注意数据库目录必须为空,mysql服务不能启动
5)还原属性
6)启动服务
7)查看数据库
3.MyCAT实现MySQL读写分离
1.安装Mycat和数据库
2.修改主从数据库配置文件
3.Master上创建复制用户
4.slave上执行
5.启动mycat
6.查看日志,确认成功
7.用默认密码连接mycat
8.在Mysql服务器上修改mycat的连接信息
其他地方省略,可在底行命令模式快速查询 :/user name=
9.修改schem.xml实现读写分离策略
10.在后端主服务器创建用户并对mycat授权
11.在Mycat服务器上连接测试
12.通过通用日志确认实现读写分离
13.停止从节点,Mycat自动调度读请求至主节点
4.ansible常用模块介绍
4.1 command模块
功能:在远程主机执行命令,此为默认模块,可忽略-m选项
注意:此命令不支持 $VARNAME < > | ; & 等,用shell模块实现
4.2 shell模块
功能:和command相似,用shell执行命令,支持各种符号,比如:*,$,>
4.3 cript模块
功能:在远程主机上运行ansible服务器上的脚本(无需执行权限),相当于scp+shell的组合命令
4.4 copy模块
功能:从ansible服务器主控端复制文件到远程主机,类似于scp,但速度不及scp
copy命令中带的参数信息
owner :所属主
group :所属组
mode :权限
force :如果目标主机包含该文件,但内容不同,则设置yes后会强制覆盖,设置为no后,只有当目标主机的目标位置不存在该文件时,才复制改文件到目标主机;默认值为yes。
backup :在覆盖之前备份源文件,备份文件包含时间
Tip1:使用此模块,需要提前关闭所有机器的selinux功能,否则会报错
Tip2:copy模块跟rsync命令一样,如果路径使用"/"来结尾,只复制目录里的内容,反之,则包含目录在内的整个内容全部被复制。
4.5 fetch模块
功能:从远程主机提取文件至ansible的主控端,copy相反,目前不支持目录
4.6 file模块
功能:设置文件属性,创建软链接等
group :定义文件或目录的属组。
mode :定义文件或目录的权限。
owner :定义文件或目录的属主。
path :必选项,定义文件或目录的路径。
recurse :递归设置文件的属性,只对目录有效。
src :被链接的源文件路径,只对应state=link的情况。
dest :被链接到的路径,只应用于state=link的情况。
force :强制创建软链接,两种情况:一种是源文件不存在,但之后会建立;另一种是要先取消已创建的软链接,再创建新的软链接,有两个选项yes和no。
state :后面连接文件的各种状态,例如下面的directory、link、hard、file及absent。
link :创建软链接。
hard :创建硬链接。
directory :如果目录不存在,则创建目录。
file :即时文件不存在,也不会被创建。
absent :删除目录、文件或链接文件。
touch :如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则其最后的修改时间,类似于touch效果
4.7 unarchive模块
功能:解包解压缩
实现有两种用法:
1.将ansible主机上的压缩包传到远程主机后解压缩至特定目录,设置copy=yes
2.将远程主机上的某个压缩包解压缩到指定路径下,设置copy=no
常见参数:
copy :默认为yes,当copy=yes,拷贝的文件是从ansible主机复制到远程主机上,如果设置为copy=no,会在远程主机上寻找src源文件
remote_src:和copy功能一样且互斥,yes表示在远程主机,不在ansible主机,no表示文件在ansible主机上
src :源路径,可以是ansible主机上的路径,也可以是远程主机(被管理端或者第三方主机)上的路径,如果是远程主机上的路径,则需要设置copy=no
dest :远程主机上的目标路径
mode :设置解压缩后的文件权限
4.8 archive模块
功能:打包压缩保存在被管理节点
format指定压缩格式:bz2, gz, tar, xz, zip #可写可不写
path:要压缩的文件或目录
des:压缩后的文件名称
4.9 Hostname模块
功能:管理主机名
4.10 cron模块
功能:计划任务
支持时间:minute,hour,day,month,weekday
4.11 yum和apt模块
功能:
yum 管理软件包,只支持RHEL,CentOS,fedora,不支持Ubuntu其它版本
apt 模块管理 Debian 相关版本的软件包
参数:
config_file :yum的配置文件。
disable_gpg_check :关闭gpg_check。
disablerepo :不启用某个源。
enablerepo :启用某个源。
name :要进行操作的软件包的名字,也可以传递一个url或一个本地的rpm包的路径。
state :present|absent|latest,state状态对应了3种软件包状态,这里present和latest都表示安装,而absent则表示移除。
在被控端安装Nginx的yum源安装Nginx软件包
注:state的安装状态可不写,删除一定要写
4.12 service模块
功能:管理服务
4.13 user模块
功能:管理用户
4.14 group模块
功能:管理用户
4.15 lineinfile模块
ansible在使用sed进行替换时,经常会遇到需要转义的问题,而且ansible在遇到特殊符号进行替换时,存在问题,无法正常进行替换。其实在ansible自身提供了两个模块:lineinfile模块和replace模块,可以方便的进行替换。
一般在ansible当中去修改某个文件的单行进行替换的时候需要使用lineinfile模块。
regexp参数:使用正则表达式匹配对应的行,当替换文本时,如果有多行文本都能被匹配,则只有最后面被匹配到的那行文本才会被替换,当删除文本时,如果有多行文本都能被匹配,这么这些行都会被删除。
如果想进行多行匹配进行替换需要使用replace模块。
功能:相当于sed,可以修改文件内容
4.16 replace模块
该模块有点类似于sed命令,主要也是基于正则进行匹配和替换,建议使用
4.17 setup模块
setup 模块来收集主机的系统信息,这些 facts 信息可以直接以变量的形式使用,但是如果主机较多,会影响执行速度,可以使用 gather_facts: no 来禁止 Ansible 收集 facts 信息。
4.18 synchronize模块
synchronize模块回调用rsync命令,因此首先要记得提前安装好rsync软件包。
synchronize模块用于将ansible机器的指定目录推送到客户机器的指定目录下:
4.19 get_url模块
get_url模块可以实现在远程主机上下载url到本地,这个模块应该用的比较多