[mysqld]
log-bin=mysql-bin
server-id=1
更改完后重启mysql服务器。
[mysqld]
innodb_flush_log_at_trx_commit=1
sync_binlog=1
innodb_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 shutdown
3 拷贝并压缩数据文件
[root@HA1 data]# tar czvf /tmp/databack.tar.gz /usr/local/mysql/data
4 重启mysql master服务
mysql> FLUSH TABLES WITH READ LOCK;
2 拷贝并压缩数据文件
[root@HA1 data]# tar czvf /tmp/databack.tar.gz /usr/local/mysql/data
3 释放读锁
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.db
2.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 shutdown
2 拷贝已有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】。