这两天一直在配置mysql数据库的多主一从的配置。其实现的思路是利用一个数据库启动两个实例(通过mysqld_multi),而这两个实例指向同一个数据库文件目录。但是配置过程中需要注意很多地方。
首先,由于启用了innodb,所以在启动数据服务的时候,服务进程会对innodb数据文件ibdata1加锁,导致第二个实例一致报错,在报了N多个 错误之后,放弃读取数据文件。所以在第二个实例启动时无法读取innodb的表数据,导致这种方案无法同步两个都包含innodb表的镜像。尝试采用指定 数据文件的方式(innodb_data_file_path=ibdata2:98M:autoextend,ibdata2是把ibdata1复制获 得的,注意大小应该和现有的数据文件大小一致,为大于等于数据文件大小的最小整数),启动多个实例,仍然报错,只是错误信息变成了innodb的log文 件无法读取,因此继续设置innodb_log_group_home_dir=test-innodb-log,指定日志文件的存储位置(启动时,提示 无法找到日志文件,自动建立新的日志文件ib_logfile1,ib_logfile0)。启动成功(./bin/mysqld_multi --config-file=./var/my.cnf --mysqld=mysqld_safe start 1,2)。另外不能重复的还有如下选项:
- port = 5507
- socket = var/mysql.sock2
- pid-file= var/test-db2a.pid
在配置同步镜像时,还有很多需要注意,由于是存在两个同步,很多配置不能采用默认设置,否则两个同步进程会读取同一个文件,互相干扰。有如下几个配置:
主服务器信息文件:master-info-file = test-master.info
relay日志文件:relay-log = test-relay-bin
relay日志索引文件:relay-log-index = test-relay-bin.index
relay日志信息文件:relay-log-info-file=test-relay-log.info
完整的配置文件如下:
- [mysqld_multi]
- mysqld = /home/work/local/test/mysql/bin/mysqld_safe
- mysqladmin = /home/work/local/test/mysql/bin/mysqladmin
- # Here follows entries for some specific programs
- # server 1
- [mysqld1]
- port = 5506
- socket = /home/work/local/test/mysql/var/mysql.sock1
- skip-locking
- pid-file= /home/work/local/test/mysql/var/test-db1a.pid
- datadir = /home/work/local/test/mysql/var
- log=/home/work/local/test/mysql/var/test-db1.log
- user = mysql
- log-slow-queries=/home/work/local/test/mysql/var/slowquery1.log
- long_query_time = 2
- key_buffer = 256M
- max_allowed_packet = 1M
- read_buffer_size = 2M
- myisam_sort_buffer_size = 64M
- thread_cache = 32
- query_cache_size = 32M
- thread_concurrency = 2
- max_connections=500
- server-id = 4
- master-host = localhost
- master-user = replicuser
- master-password = 123456
- master-port = 7890
- #report-host = test-db3
- master-connect-retry = 30
- #replicate-rewrite-db=from_name->to_name
- replicate-do-table = test.usertest
- master-info-file = test-master.info
- relay-log = relay1-relay-bin
- relay-log-index = relay1-relay-bin.index
- relay-log-info-file=relay1-relay-log.info
- innodb_data_file_path=ibdata1:98M:autoextend
- log-slave-updates
- #
- # binary logging - not required for slaves, but recommended
- log-bin
- # The MySQL server 2
- [mysqld2]
- port = 5507
- socket = /home/work/local/test/mysql/var/mysql.sock2
- skip-locking
- pid-file= /home/work/local/test/mysql/var/test-db2a.pid
- datadir = /home/work/local/test/mysql/var
- log=/home/work/local/test/mysql/var/test-db2.log
- user = root
- log-slow-queries=/home/work/local/test/mysql/var/slowquery2.log
- long_query_time = 2
- key_buffer = 256M
- max_allowed_packet = 1M
- table_cache = 512
- sort_buffer_size = 2M
- read_buffer_size = 2M
- myisam_sort_buffer_size = 64M
- thread_cache = 32
- query_cache_size = 32M
- thread_concurrency = 2
- max_connections=500
- server-id = 5
- master-host = localhost
- master-user = replicuser
- master-password = 123456
- master-port = 3336
- master-connect-retry=60
- replicate-do-table = test2.user2
- master-info-file = relay2-master.info
- relay-log = relay2-relay-bin
- relay-log-index = relay2-relay-bin.index
- innodb_data_file_path=ibdata2:98M:autoextend
- innodb_log_group_home_dir=relayt2-innodb-log/
- relay-log-info-file=relay2-relay-log.info
- log-slave-updates
- #
- # binary logging - not required for slaves, but recommended
- log-bin
- [mysqldump]
- quick
- max_allowed_packet = 16M
本日志由 flyinweb 于 2009-10-29 09:11:41 发表,目前已经被浏览 9235 次,评论 4 次;
引用通告:http://www.517sou.net/Article/304/Trackback.ashx
It is quite useful and interesting too.
VIRT 的上限是64G,也就是36位, cat /proc/cpuinfo的结果是:addre
昨天要准备用线程重写webbench,试验了下Fedora Linux 2.6.35.14
不明白您的具体的意思是什么?
已经发送到你QQ邮箱
http://www.2mysite.net/scriptencoder/screnc.asp 站长你好,看
你好,我发现一个问题,就是从mysqld2同步过来的数据,在mysqld1的
晕,我说是怎么回事情,原来我和你一样,忘记设置了活动分区