mysql复制工作方式
主服务器将变更写入二进制日志 从服务器读取主服务器的二进制日志变更写入到relay_log中 在从服务器上重放relay_log中的日志 基于SQL段(statement)的日志是在从服务器上重新执行记录的SQL 基于行的日志(row)则是在从库上直接应用对数据库行的修改基于日志点的复制
基于日志点的复制步骤:
在主DB服务器上建立复制账号CREATE USER 'repl'@'ip段' IDENTIFIED by 'youpassword';GRANT replication SLAVE ON *.* TO 'repl'@'ip段';
2 . 配置主数据库服务器
log_bin = mysql_bin max_binlog_size = 1000Mbinlog_formart = rowexpire_logs_day = 7sync_binlog = 1server_id = 100 #动态参数,集群中唯一
3 . 配置从数据库服务器
log_bin = mysql_binrelay_log = mysqld-relay-binserver_id = 101relay_id = mysql-relay-binlog_slave_update = on #可选read_only = on #可选
4.初始化从服务器数据
mysqldump --master-data=2 -single-transaction #innodbxtrabackup --slave-info #推荐的热备份工具
5 . 启动复制链路
CHANGE MASTER TO MASTER_HOST = 'master_host_ip', MASTER_USER = 'repl', MASTER_PASSWORD = 'youpassword', MASTER_LOG_FILE = 'mysql_log_file_name', MASTER_LOG_POS = 4; start slave
优点:
是Mysql最早支持的复制技术,bug相对较少 对SQL查询没有任何限制 故障处理比较容易缺点:
故障转移时重新获取新主的日志点信息比较困难