首页 > 代码库 > saltstack实现数据库基于GTID的主从复制
saltstack实现数据库基于GTID的主从复制
安装pkg部分
[root@server1 pkg]# pwd
/srv/salt/pkg
[root@server1 pkg]# cat install.sls
pkg-install:
pkg.installed:
- pkgs:
- gcc
- pcre-devel
- openssl-devel
- libxml2-devel
- libcurl-devel
- libpng-devel.x86_64
- freetype-devel
- gmp-devel
- net-snmp-devel
- libtool-ltdl-devel.x86_64
- ncurses-devel.x86_64
- gcc-c++
- libnfnetlink.x86_64
- libjpeg-turbo-devel
建立用户部分
[root@server1 user]# pwd
/srv/salt/user
[root@server1 user]# cat mysql.sls
mysql-group:
group.present:
- name: mysql
- gid: 1002
mysql-user:
user.present:
- name: mysql
- uid: 1002
- gid: 1002
- shell: /sbin/nologin
安装mysql部分
[root@server1 mysql]# cat install.sls
include:
- pkg.install
- user.mysql
mysql-install:
pkg.installed:
- pkgs:
- mysql-community-client
- mysql-community-common
- mysql-community-libs
- mysql-community-libs-compat
- mysql-community-server
- creates: /usr/local/mysql
- require:
- pkg: pkg-install
- user: mysql-user
主配置文件
[root@server1 files]# pwd
/srv/salt/mysql/files
[root@server1 files]# cat my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[mysqld]
server-id={{ id }}
gtid-mode=ON
enforce-gtid-consistency
{{ GG }}
配置部分
高亮部分为:从日志中提取密码
[root@server1 mysql]# cat service.sls
include:
- mysql.install
mysql-password:
cmd.run:
- name: /etc/init.d/mysqld start ;cd /var/log ;passwd=`cat mysqld.log |grep ‘temporary password‘|awk {‘print $NF‘}` ;mysql -p$passwd -e "alter user root@localhost identified by ‘Zoe++007‘;" --connect-expired-password
#mysql5.1.7,如果密码为明文输入模式,加参数
- unless: test -d /var/lib/mysql/mysql
mysql-config:
file.managed:
- name: /etc/my.cnf
- source: salt://mysql/files/my.cnf
- template: jinja
{% if grains[‘fqdn‘] == ‘server2.lalala.com‘ %}
- id: 2
- GG: log-bin= mysql-bin
{% elif grains[‘fqdn‘] == ‘server3.lalala.com‘ %}
- id: 3
- GG: read-only
{% endif %}
#使用jinja模板,给不同主机配置不同信息
replication-config:
cmd.run:
{% if grains[‘fqdn‘] == ‘server2.lalala.com‘ %}
- name: mysql -pZoe++007 -e "grant replication slave on *.* to miao@‘172.25.88.%‘ identified by ‘Zoe++007‘;" --connect-expired-password
{% elif grains[‘fqdn‘] == ‘server3.lalala.com‘ %}
- name: mysql -pZoe++007 -e "change master to master_host=‘172.25.88.2‘,master_user=‘miao‘,master_password=‘Zoe++007‘ ,master_auto_position=1;start slave; " --connect-expired-password
{% endif %}
- unless: test -f /var/lib/mysql/relay-log.info
mysql-init:
cmd.run:
- name: chkconfig --add mysqld
- unless: chkconfig --list mysqld
- require:
- file: mysql-config
service.running:
- name: mysqld
- enable: True
- reload: True
- watch:
- file: mysql-config
运行过程
安装mysql
[root@server1 mysql]# salt ‘*‘ state.sls mysql.install
server2.lalala.com:
----------
ID: pkg-install
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 00:12:07.825421
Duration: 981.668 ms
Changes:
----------
ID: mysql-group
Function: group.present
Name: mysql
Result: True
Comment: Group mysql is present and up to date
Started: 00:12:08.808725
Duration: 1.228 ms
Changes:
----------
ID: mysql-user
Function: user.present
Name: mysql
Result: True
Comment: User mysql is present and up to date
Started: 00:12:08.812821
Duration: 2.448 ms
Changes:
----------
ID: mysql-install
Function: pkg.installed
Result: True
Comment: 5 targeted packages were installed/updated.
Started: 00:12:08.816644
Duration: 104155.617 ms
Changes:
----------
mysql-community-client:
----------
new:
5.7.17-1.el6
old:
mysql-community-common:
----------
new:
5.7.17-1.el6
old:
mysql-community-libs:
----------
new:
5.7.17-1.el6
old:
mysql-community-libs-compat:
----------
new:
5.7.17-1.el6
old:
mysql-community-server:
----------
new:
5.7.17-1.el6
old:
Summary for server2.lalala.com
------------
Succeeded: 4 (changed=1)
Failed: 0
------------
Total states run: 4
Total run time: 105.141 s
gtid主从复制过程
[root@server1 ~]# salt ‘*‘ state.sls mysql.service
server3.lalala.com:
----------
ID: pkg-install
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 00:57:19.765213
Duration: 1153.547 ms
Changes:
----------
ID: mysql-group
Function: group.present
Name: mysql
Result: True
Comment: Group mysql is present and up to date
Started: 00:57:20.920669
Duration: 1.525 ms
Changes:
----------
ID: mysql-user
Function: user.present
Name: mysql
Result: True
Comment: User mysql is present and up to date
Started: 00:57:20.925427
Duration: 3.069 ms
Changes:
----------
ID: mysql-install
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 00:57:20.930287
Duration: 1.757 ms
Changes:
----------
ID: mysql-password
Function: cmd.run
Name: /etc/init.d/mysqld start ;cd /var/log ;passwd=`cat mysqld.log |grep ‘temporary password‘|awk {‘print $NF‘}` ;mysql -p$passwd -e "alter user root@localhost identified by ‘Zoe++007‘;" --connect-expired-password
Result: True
Comment: unless execution succeeded
Started: 00:57:20.934090
Duration: 14.475 ms
Changes:
----------
ID: mysql-config
Function: file.managed
Name: /etc/my.cnf
Result: True
Comment: File /etc/my.cnf is in the correct state
Started: 00:57:20.956275
Duration: 138.318 ms
Changes:
----------
ID: replication-config
Function: cmd.run
Name: mysql -pZoe++007 -e "change master to master_host=‘172.25.88.2‘,master_user=‘miao‘,master_password=‘Zoe++007‘ ,master_auto_position=1;start slave; " --connect-expired-password
Result: True
Comment: unless execution succeeded
Started: 00:57:21.094874
Duration: 18.675 ms
Changes:
----------
ID: mysql-init
Function: cmd.run
Name: chkconfig --add mysqld
Result: True
Comment: unless execution succeeded
Started: 00:57:21.115328
Duration: 15.975 ms
Changes:
----------
ID: mysql-init
Function: service.running
Name: mysqld
Result: True
Comment: The service mysqld is already running
Started: 00:57:21.134324
Duration: 102.086 ms
Changes:
Summary for server3.lalala.com
------------
Succeeded: 9
Failed: 0
------------
Total states run: 9
Total run time: 1.449 s
server2.lalala.com:
----------
ID: pkg-install
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 00:57:19.640339
Duration: 1109.781 ms
Changes:
----------
ID: mysql-group
Function: group.present
Name: mysql
Result: True
Comment: Group mysql is present and up to date
Started: 00:57:20.751699
Duration: 1.176 ms
Changes:
----------
ID: mysql-user
Function: user.present
Name: mysql
Result: True
Comment: User mysql is present and up to date
Started: 00:57:20.755638
Duration: 2.436 ms
Changes:
----------
ID: mysql-install
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 00:57:20.759704
Duration: 1.455 ms
Changes:
----------
ID: mysql-password
Function: cmd.run
Name: /etc/init.d/mysqld start ;cd /var/log ;passwd=`cat mysqld.log |grep ‘temporary password‘|awk {‘print $NF‘}` ;mysql -p$passwd -e "alter user root@localhost identified by ‘Zoe++007‘;" --connect-expired-password
Result: True
Comment: unless execution succeeded
Started: 00:57:20.763005
Duration: 13.151 ms
Changes:
----------
ID: mysql-config
Function: file.managed
Name: /etc/my.cnf
Result: True
Comment: File /etc/my.cnf is in the correct state
Started: 00:57:20.783348
Duration: 120.448 ms
Changes:
----------
ID: replication-config
Function: cmd.run
Name: mysql -pZoe++007 -e "grant replication slave on *.* to miao@‘172.25.88.%‘ identified by ‘Zoe++007‘;" --connect-expired-password
Result: True
Comment: Command "mysql -pZoe++007 -e "grant replication slave on *.* to miao@‘172.25.88.%‘ identified by ‘Zoe++007‘;" --connect-expired-password" run
Started: 00:57:20.904105
Duration: 248.09 ms
Changes:
----------
pid:
2697
retcode:
0
stderr:
mysql: [Warning] Using a password on the command line interface can be insecure.
stdout:
----------
ID: mysql-init
Function: cmd.run
Name: chkconfig --add mysqld
Result: True
Comment: unless execution succeeded
Started: 00:57:21.154072
Duration: 14.785 ms
Changes:
----------
ID: mysql-init
Function: service.running
Name: mysqld
Result: True
Comment: The service mysqld is already running
Started: 00:57:21.171797
Duration: 100.02 ms
Changes:
Summary for server2.lalala.com
------------
Succeeded: 9 (changed=1)
Failed: 0
------------
Total states run: 9
Total run time: 1.611 s
本文出自 “12049878” 博客,谢绝转载!
saltstack实现数据库基于GTID的主从复制
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。