你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何使用python脚本部署mariadb主从架构?

[复制链接]
gaosmile 发布时间:2020-7-15 20:30
环境准备一个脚本自动部署master服务 另一个部署slave服务 关闭主从节点的防火墙 以及事先设置好root远程登陆的权限。 grant all on *.* to root@'%' identified by 'root' ;


master

  1. import paramiko
  2. ssh=paramiko.SSHClient()
  3. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  4. ssh.connect(hostname='192.168.253.168',port=22,username='root',password='root')
  5. a="sed -i -e '12aserver_id=1' -e '13alog_bin=mysql_bin' /etc/my.cnf.d/server.cnf"
  6. b= 'systemctl restart mariadb'
  7. c='''mysql -uroot -proot -e "grant replication slave on *.* to 'slave'@'%' identified by 'slave'"'''
  8. d='''mysql -uroot -proot -e "show master status" '''

  9. 当然也可以将abcd四条命令写入一个列表,使用for语句循环出来放入下面命令执行。

  10. stdin,stderr,stdout=ssh.exec_command(d)    #将abcd分别执行
  11. res = stdout.read().decode('utf-8') + stderr.read().decode('utf-8')
  12. print(res)
  13. 运行显示结果:
  14. sed -i -e '12aserver_id=1' -e '13alog_bin=mysql_bin' /etc/my.cnf.d/server.cnf
  15. systemctl restart mariadb
  16. mysql -uroot -p1 -e "grant replication slave on *.* to 'slave'@'%' identified by 'slave'"
  17. mysql -uroot -p1 -e "show master status"
  18. File    Position    Binlog_Do_DB    Binlog_Ignore_DB
  19. mysql_bin.000012   887350
复制代码

在linux端查看是否配置成功。
注:mysql -uroot -p1 -e   此命令可以使用paramiko模块直接执行sql语句。e是edit的意思。
当然,也可以使用pymsql模块连接mysql数据库然后利用cur游标里封装的execute方法来执行sql语句,但是可能在执行给与权限的命令时会报错,因为远程登陆并没有权限这么做。


slave
如下的file变量和port变量在master节点会变动,特别时重启数据库后。如果查看slave status,显示: Slave_IO_Running: No Slave_SQL_Running: No 或者一个YES一个connecting的话,这是因为主节点的master状态发生了变化或者两台主机的某一台防火墙没有关闭。

  1. master_ip ='192.168.253.168'
  2. log_file='mysql_bin.000012'
  3. pos=887350

  4. import paramiko
  5. ssh=paramiko.SSHClient()
  6. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  7. ssh.connect(hostname='192.168.253.167',port=22,username='root',password='root')

  8. a="sed -i '12aserver_id=2'  /etc/my.cnf.d/server.cnf"
  9. b='systemctl restart mariadb'
  10. c='''mysql -uroot -proot -e "CHANGE MASTER TO MASTER_HOST='%s', MASTER_USER='slave', MASTER_PASSWORD='slave', MASTER_LOG_FILE='%s', MASTER_LOG_POS=%s" '''%(master_ip,log_file,pos)
  11. d="mysql -uroot -proot -e 'start slave'"
  12. stdin,stderr,stdout=ssh.exec_command(d)        #将abcd分别执行
  13. res = stdout.read().decode('utf-8')+ stderr.read().decode('utf-8')
  14. print(res)
复制代码


如果报错:The server is not configured as slave; fix in config file or with CHANGE MASTER TO

1.原因一:配置文件没有添加server_id=2,或者添加完没有成功重启
2.原因二:mysql -uroot -p1 -e "CHANGE MASTER TO MASTER_HOST='%s', MASTER_USER='slave', MASTER_PASSWORD='slave', MASTER_LOG_FILE='%s', MASTER_LOG_POS=%s" ''' % (master_ip,log_file,pos)

这条命令没有执行成功,但注意这条命令不成功不会报错,怎么检测呢,可以粘贴脚本的这条命令到终端上执行试试看能否成功。
结果显示:
微信图片_20200715202750.jpg
检测:在主节点创建一个数据库,并在从节点数据库中查看是否同步上。Master
微信图片_20200715202753.jpg
slave
微信图片_20200715202756.jpg


收藏 评论0 发布时间:2020-7-15 20:30

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版