本篇内容介绍了“MySQL多主一从的备份方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
10多年的那曲网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都营销网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整那曲建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“那曲网站设计”,“那曲网站推广”以来,每个客户项目都认真落实执行。为了负载均衡我们做过一主一从、一主多从,那么多主一从我们基本用于备份策略当中。我们知道宏观的一主多从其实就是加了几个服务器,微观到每个服务器就是一主一从的实现。多主一从的实现是也是基于一主一从,区别在于配置与启动/停止的方式上。
主服务器略
下面我们来仔细看下从服务器的配置文件/etc/my.cnf,主要有两部分[mysqld_multi]和[mysqld]模块
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = root
password = 123456
# The MySQL server
[mysqld1]
port = 3306
socket = /tmp/mysql.sock1
pid-file = /data/dbfile/file-1.pid
log-bin=mysql-bin-1
binlog_format=mixed
log-error=/data/dbfile/err-1.log
server-id = 1
master-host=192.168.1.1
master-user=testrep
master-password=rep123
master-port=3306
master-connect-retry=30
master-info-file=master-1.info
relay-log=relay-bin-2
relay-log-index=relay-bin-1.index
relay-log-info-file=relay-log-1.info
replicate-do-db=mytestdb
innodb_data_home_dir = /data/dbfile/1test
innodb_data_file_path=ibdata1:10M:autoextend
innodb_log_group_home_dir = /data/dbfile/1test
log-slave-updates
[mysqld2]
port = 3307
socket = /tmp/mysql.sock2
pid-file = /data/dbfile/file-2.pid
log-bin=mysql-bin-2
binlog_format=mixed
log-error=/data/dbfile/err-2.log
server-id = 2
master-host=192.168.1.1
master-user=testrep
master-password=rep123
master-port=3306
master-connect-retry=30
master-info-file=master-2.info
relay-log=relay-bin-2
relay-log-index=relay-bin-2.index
relay-log-info-file=relay-log-2.info
replicate-do-db=mytestdb
innodb_data_home_dir = /data/dbfile/2test
innodb_data_file_path=ibdata2:10M:autoextend
innodb_log_group_home_dir = /data/dbfile/2test
log-slave-updates
[mysqld_multi]模块说明——这个模块是必须的,否则mysqld多实例服务会起不来
其中4个选项分别指定mysqld的启动、管理位置,超级用户口令是mysqld_multi所需要的
[mysqld]模块——这个大家应该都很熟悉了实例
启动部分:[mysqld2]就是[mysqld1]的一个拷贝,区别于[mysqld1]的端口和文件
Slave部分:server-id等选项不要重复指定,每个[mysqld]Slave拥有自己的属性和文件
值得一提的是InnoDB部分,由于每个主服务器的ibdata、ib_logfile*基本是默认设置,所以Replicate过来后会交叉覆盖,这样会导致从服务器数据混乱。我们可以为每个实例配置InnoDB文件独立的存储位置来解决这一问题
启动/停止多实例
# /usr/local/mysql/bin/mysqld_multi start 1,2
# /usr/local/mysql/bin/mysqld_multi stop 1,2
查看每个实例是否都起来了
# ps aux|grep mysq l
我们可以看到四个相关进程,每个实例分别有两个进程
访问mysql
# mysql -uroot -p123456 -P3306
# mysql -uroot -p123456 -P3307
登录后我们发现show database会列出所有的数据库。没有关系,只有属于自己端口下的数据才可以访问,其他端口的会提示table does'nt exist![@more@]
对于多个mysqld实例进程我们建议使用服务来管理,就像service mysqld start一样
将源码包中/data/source/mysql-5.1.38/support-files/mysqld_multi.server.sh文件拷贝到启动目录下
# cp /data/source/mysql-5.1.38/support-files/mysqld_multi.server /etc/init.d/mysqld_multi
# chmod +x /etc/init.d/mysqld_multi
# service mysqld_multi start
启动/停止还有很多种方式
# /usr/local/mysql/bin/mysqld_multi --config-file=/etc/my.cnf --mysqld=/usr/local/mysql/bin/mysqld_safe start 1,2
# /usr/local/mysql/bin/mysqladmin shutdown 1,2
“MySQL多主一从的备份方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联-成都网站建设公司网站,小编将为大家输出更多高质量的实用文章!