Linux CentOS 5.5 下 MySQL 5.5.3-m3 同步与主从备份(一)

2014-11-24 18:10:00 · 作者: · 浏览: 0

**************************前言**************************


一.主从的作用:


1.可以当做一种备份方式


2.用来实现读写分离,缓解一个数据库的压力


二.环境:


DB MySQL5.5.3-m3


三.MySQL主从备份原理


master 上提供binlog ,


slave 通过 I/O线程从 master拿取 binlog,并复制到slave的中继日志中


slave 通过 SQL线程从 slave的中继日志中读取binlog ,然后解析到slave中


四.主从复制大前提


需要master与slave同步,因为笔者的数据库数据量不大,所以无需考虑太多,直接把


master上的data复制到了slave上,但是如果是大的数据量,比如像taobao这个的系统


那么数据同步也是很难得,需要有一个完善的方案,有兴趣的可以看看这篇文章


http://www.taobaodba.com/html/564_%E5%A2%9E%E9%87%8F%E6%97%A5%E5%BF%97%E8%BF%AD%E4%BB%A3%E5%90%8C%E6%AD%A5%E5%92%8C%E9%98%BF%E5%9F%BA%E9%87%8C%E6%96%AF%E6%82%96%E8%AE%BA.html


**************************开始***************************************************


一.将master设置为只读。


mysql> flush tables with read lock;


二.用master中的data文件夹替换slave中的data文件夹


比如 用 tar zcvf mysql_data.gz /media/raid10/mysql/3306/data


然后 mv mysql_data.gz /media/raid10/htdocs/blog/wordpress/


因为我的 /media/raid10/htdocs/blog/wordpress/ 是 Nginx 的主目录


所以可以在 slave上,用wget下载这个文件,然后 解压,并覆盖slave上的data文件


注意:覆盖之前最好备份源文件


三.配置master的my.cnf,添加以下内容


在[mysqld]配置段添加如下字段


server-id=1


log-bin=/media/raid10/mysql/3306/binlog/binlog //这里写你的binlog绝对路径名


binlog-do-db=blog //需要同步的数据库,如果没有本行,即表示同步所有的数据库


binlog-ignore-db=mysql //被忽略的数据库


这里给出我的my.cnf配置文件


[client]


character-set-server = utf8


port = 3306


socket = /tmp/mysql.sock


[mysqld]


character-set-server = utf8


replicate-ignore-db = mysql


replicate-ignore-db = test


replicate-ignore-db = information_schema


user = mysql


port = 3306


socket = /tmp/mysql.sock


basedir = /usr/local/webserver/mysql


datadir = /media/raid10/mysql/3306/data


log-error = /media/raid10/mysql/3306/mysql_error.log


pid-file = /media/raid10/mysql/3306/mysql.pid


open_files_limit = 10240


back_log = 600


max_connections = 5000


max_connect_errors = 6000


table_cache = 614


external-locking = FALSE


max_allowed_packet = 16M


sort_buffer_size = 1M


join_buffer_size = 1M


thread_cache_size = 300


#thread_concurrency = 8


query_cache_size = 20M


query_cache_limit = 2M


query_cache_min_res_unit = 2k


default-storage-engine = MyISAM


thread_stack = 192K


transaction_isolation = READ-COMMITTED


tmp_table_size = 20M


max_heap_table_size = 20M


long_query_time = 3


log-slave-updates


log-bin = /media/raid10/mysql/3306/binlog/binlog


binlog-do-db=blog


binlog-ignore-db=mysql


binlog_cache_size = 4M


binlog_format = MIXED


max_binlog_cache_size = 8M


max_binlog_size = 20M


relay-log-index = /media/raid10/mysql/3306/relaylog/relaylog


relay-log-info-file = /media/raid10/mysql/3306/relaylog/relaylog


relay-log = /media/raid10/mysql/3306/relaylog/relaylog


expire_logs_days = 30


key_buffer_size = 10M


read_buffer_size = 1M


read_rnd_buffer_size = 6M


bulk_insert_buffer_size = 4M


myisam_sort_buffer_size = 8M


myisam_max_sort_file_size = 20M


myisam_repair_threads = 1


myisam_recover


interactive_timeout = 120


wait_timeout = 120


skip-name-resolve


#master-connect-retry = 10


slave-skip-errors = 1032,1062,126,1114,1146,1048,1396


#master-host = 192.168.1.2


#master-user = username


#master-password = password


#master-port = 3306


server-id = 1


innodb_additional_mem_pool_size = 16M


innodb_buffer_pool_size = 20M


innodb_data_file_path = ibdata1:56M:autoextend


innodb_file_io_threads = 4


innodb_thread_concurrency = 8


innodb_flush_log_at_trx_commit = 2


innodb_log_buffer_size = 16M


innodb_log_file_size = 20M


innodb_log_fi