Mysql主从复制的配置

 

一、         my.ini配置文件的修改:

1、  在主服务器上修改:

[mysqld]

#datadir=F:/Application/Mysql5.6/data

port=5616

event_scheduler=ON

max_allowed_packet = 16M

skip-name-resolve

sql_mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"

default_storage_engine=innodb

innodb_file_per_table=1

innodb_file_format = Barracuda

innodb_open_files=1000

innodb_buffer_pool_size=2188M

innodb_log_file_size=50M

max_connections=500

max_connect_errors=5000

max_prepared_stmt_count=50000

innodb_print_all_deadlocks = 1

innodb_lock_wait_timeout = 60

#table_cache=2048

transaction_isolation=REPEATABLE-READ

loose-skip-external-locking

innodb_flush_log_at_trx_commit=2

#binlog_format="STATEMENT"

#binlog_format="ROW"

binlog_format="MIXED"

sort_buffer_size=2M

tmp_table_size=64M

max_heap_table_size=64M

slow_query_log=off

slow_query_log_file = slow-queries.log

#log-queries-not-using-indexes

log-bin=matster-bin

log-bin-index=matster-bin.index

server-id=1

expire-logs-days=3

max_binlog_size = 512M

log_bin_trust_function_creators=1

query_cache_type=1

query_cache_size=128M

query_cache_limit=128M

innodb_read_io_threads=8

innodb_write_io_threads=8

 

[client]

port=5616

#default-character-set=gbk

 

[mysqldump]

quick

max_allowed_packet = 16M

 

2、  在从服务器上修改:

[mysqld]

#basedir=D:/Application/mysql-5.6.16-slave

#datadir=D:/Application/mysql-5.6.16-slave/data

port=5600

event_scheduler=ON

max_allowed_packet = 16M

skip-name-resolve

sql_mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"

default_storage_engine=innodb

innodb_file_per_table=1

innodb_file_format = Barracuda

innodb_open_files=1000

innodb_buffer_pool_size=1023M

innodb_log_file_size=50M

max_connections=500

max_connect_errors=5000

max_prepared_stmt_count=50000

innodb_print_all_deadlocks = 1

innodb_lock_wait_timeout = 60

#table_cache=2048

transaction_isolation=REPEATABLE-READ

loose-skip-external-locking

innodb_flush_log_at_trx_commit=2

#binlog_format="STATEMENT"

#binlog_format="ROW"

#binlog_format="MIXED"

sort_buffer_size=2M

tmp_table_size=64M

max_heap_table_size=64M

slow_query_log=off

slow_query_log_file = slow-queries.log

#log-queries-not-using-indexes

#log-bin=matster-bin

#log-bin-index=matster-bin.index

server-id=160

#expire-logs-days=3

relay-log=slave-relay-bin

relay-log-index=slave-relay-bin.index

#max_binlog_size = 512M

#log_bin_trust_function_creators=1

query_cache_type=1

query_cache_size=128M

query_cache_limit=128M

innodb_read_io_threads=8

innodb_write_io_threads=8

 

[client]

port=5600

#default-character-set=gbk

 

[mysqldump]

quick

max_allowed_packet = 16M

二、在主服务器上创建复制用户

DROP USER repl_user;

CREATE USER repl_user ;

GRANT replication slave on *.* to repl_user IDENTIFIED by 'fz';

flush privileges;

show master status;

三、在从服务器上连接到主服务器

change master to master_host='10.53.2.18',master_port=5616,master_user='repl_user',master_password='fz';

START SLAVE; (可以单独启动和停止IO_THREAD或者SQL_THREAD,如start slave IO_THREAD,stop slave IO_THREAD或者start slave SQL_THREAD,stop slave SQL_THREAD)

SHOW SLAVE STATUS;

四、如果执行SHOW SLAVE STATUS后显示:

   Slave_io_Running:Yes

   Salve_SQL_Running:Yes

则说明复制机制已经正常启动运行。

五、常用于管理复制的命令:

1、flush logs:强制轮换(rotate)二进制日志文件,得到一个完整的二进制日志文件;
2、show binlog events:查看二进制日志文件里发生了哪些事件;
3、reset master:删除所有二进制日志文件并清空二进制日志索引文件,在执行此命令时,确保没有slave连接到master上;
4、reset slave:删除复制所用的所有文件,在执行此命令时,先执行stop slave.

 六、mysqlbinlog的使用

读取远程服务器的二进制日志文件:
mysqlbinlog -h192.168.2.8 -uBACKUP_user -p master-bin.000090 --short-form --read-from-remote-server

七、

如何使slave服务器将来自master的复制更新写入slave服务器的二进制日志:

在my.ini中加入

log_slave_updates=on

八、过滤复制事件:

有两种过滤事件的方法:

   1、master过滤;

         有两个选项:
         binlog-do-db=db 或者 binlog-ignore-do-db=db,前者表示过滤除db之外的所有的数据库;后者表示过滤db。二者不要同时使用。
   2、slave过滤
         有更多的选项:
         replicate-do-db=db 或者 replicate-ignore-do-db=db,含义与以上类似;
         replicatte-do-table=table或者replicate-wild-do-table=table name pattern(如 tbl% 表示开头为tbl的所有表);
         replicate-ignore-table=table或者replicate-wild-ignore-table=table name pattern;