[mysqld] log-bin=mysql-bin server-id=1更改完后重启mysql服务器。
[mysqld] innodb_flush_log_at_trx_commit=1 sync_binlog=1innodb_flush_log_at_trx_commit = 1:这也是Innodb 的默认设置。我们每次事务的结束都会触发Log Thread 将log buffer 中的数据写入文件并通知文件系统同步文件。这个设置是最安全的设置,能够保证不论是MySQL Crash 还是OS Crash 或者是主机断电都不会丢失任何
[mysqld] #skip-networking
2.2复制相关配置模板(master)
[mysqld] server_id = 123 binlog_format = mixed log-bin = mysql-bin relay-log = mysql-relay-bin log-slave-updates = 1 #skip_slave_start = 1 #replicate_wild_ignore_table = mysql.****_% read_only = 0 ####性能相关#### innodb_flush_log_at_trx_commit = 1 sync_binlog = 1 ####复制方式相关#### plugin-load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" rpl-semi-sync-master-enabled = 1 rpl-semi-sync-slave-enabled = 1 ####复制错误相关#### #replicate-ignore-table = mysql.*** slave-skip-errors = ddl_exist_errors ####复制信息相关#### relay-log-info-repository = TABLE relay_log_recovery = 1 master_info_repository = TABLE ####GTID相关#### gtid-mode = ON enforce-gtid-consistency = 1相关参数解释:
3 从机配置信息
3.1 相关配置介绍[mysqld] #log-bin=mysql-bin server-id=2如果有多个从机,每个从机的server-id都不能与master主机及其它slave从机相同。
[mysqld] server_id = 456 binlog_format = mixed log-bin = mysql-bin relay-log = mysql-relay-bin log-slave-updates = 1 #skip_slave_start = 1 #replicate_wild_ignore_table = mysql.****_% read_only = 1 ####性能相关#### innodb_flush_log_at_trx_commit = 1 sync_binlog = 1 ####复制方式相关#### plugin-load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" rpl-semi-sync-master-enabled = 1 rpl-semi-sync-slave-enabled = 1 ####复制错误相关#### #replicate-ignore-table = mysql.*** slave-skip-errors = ddl_exist_errors ####复制信息相关#### relay-log-info-repository = TABLE relay_log_recovery = 1 master_info_repository = TABLE ####GTID相关#### gtid-mode = ON enforce-gtid-consistency = 1注意事项:
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'replpassword';使用GRANT
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';或者直接使用一条命令代替
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'replpassword';5 获取master主机binlog文件及位置信息
mysql> FLUSH TABLES WITH READ LOCK;注意:
mysql> SHOW MASTER STATUS;
[root@HA1 data]# /usr/local/mysql/bin/mysqldump --all-databases --master-data > /tmp/datadump.db--master-data:该参数有两个值1和2,默认为1,mysqldump导出数据时,当这个参数的值为1的时候,mysqldump出来的文件就会包括CHANGE MASTER TO这个语句,CHANGE MASTER TO后面紧接着就是file和position的记录,在slave上导入数据时就会执行这个语句,salve就会根据指定这个文件位置从master端复制binlog。当这个值是2的时候,chang master to也是会写到dump文件里面去的,但是这个语句是被注释的状态。
mysql> FLUSH TABLES WITH READ LOCK;2 在另外一个shell客户端关闭master数据库
[root@HA1 data]# mysqladmin shutdown3 拷贝并压缩数据文件
[root@HA1 data]# tar czvf /tmp/databack.tar.gz /usr/local/mysql/data4 重启mysql master服务
mysql> FLUSH TABLES WITH READ LOCK;2 拷贝并压缩数据文件
[root@HA1 data]# tar czvf /tmp/databack.tar.gz /usr/local/mysql/data3 释放读锁
mysql> UNLOCK TABLES;6.3 其它备份方法:如xtrabackup,meb等
mysql> UNLOCK TABLES;6 配置slave从机my.cnf文件(参考上面第3节)
mysql> START SLAVE;完成上述操作之后slave便可以连接到master并同步数据了。
mysql> show slave status \G
[root@HA1 data]# mysql < datadump.db2.2 使用直接复制原始数据文件备份的数据导入
[root@HA1 data]# tar xzvf databack.tar.gz注:我们可能需要设置解压出来文件的权限确保slave能够读取或更改它们, 删除data目录下的auto.cnf文件及err日志(server_uuid:服务器身份ID。在第一次启动Mysql时,会自动生成一个server_uuid并写入到数据目录下auto.cnf文件里,官方不建议修改)。
mysql> START SLAVE;完成上述操作之后slave便可以连接到master并同步数据了。
shell> mysqladmin shutdown2 拷贝已有slave的data目录文件到新的slave的data目录。
设置从机与master主机进行通信,我们必须告诉从机必须的连接信息
9.1 基本的配置如下:
mysql> CHANGE MASTER TO -> MASTER_HOST='master_host_name', -> MASTER_USER='replication_user_name', -> MASTER_PASSWORD='replication_password', -> MASTER_LOG_FILE='recorded_log_file_name', -> MASTER_LOG_POS=recorded_log_position;实例如下:
mysql> CHANGE MASTER TO MASTER_HOST = '10.186.23.36', MASTER_USER = 'repl', MASTER_PASSWORD = 'replpassword', MASTER_PORT = 3306, MASTER_LOG_FILE = 'mysql-bin.000005', MASTER_LOG_POS = 524, MASTER_RETRY_COUNT = 0, MASTER_HEARTBEAT_PERIOD = 10000;9.2 如果开启GTID,也可以不指定MASTER_LOG_FILE及MASTER_LOG_POS:
mysql> CHANGE MASTER TO -> MASTER_HOST='master_host_name', -> MASTER_USER='replication_user_name', -> MASTER_PASSWORD='replication_password', -> MASTER_AUTO_POSITION = 1;实例如下:
mysql> CHANGE MASTER TO MASTER_HOST = '10.186.23.36', MASTER_USER = 'repl', MASTER_PASSWORD = 'replpassword', MASTER_PORT = 3306, MASTER_AUTO_POSITION = 1, MASTER_RETRY_COUNT = 0, MASTER_HEARTBEAT_PERIOD = 10000;注:复制不能通过unix的socket文件,必须使用tcp/ip连接master主机。
关于change master的详细用法,可参考我其它文章【http://blog.csdn.net/jesseyoung/article/details/41942809】。