MySQL 主从复制的详细步骤

mysql的主从复制大概思路 1:主库开启二进制文件,将变更的内容写入到主库的binlog中 2:从库的IO进程读取主库的binlog内容存储到relay log日志中 a)二进制日志点(方案一) b)GTID(mysql>=5.7)(方案二) 3:从库中的sql进程读取relay log日志存放到从库中

mysql的主从复制步骤(方案一) 1.需要注意的是两台linux的时间相同,MySQL版本最好相同,否则主服务器的mysql版本要低于从服务器的版本,要不然容易报错导致复制失败。 主服务器: 123.56.9.233 从服务器: 101.200.38.225 2: 配置主数据库服务器参数(主服务器master) 找到主数据库的配置文件/etc/my.cnf(或者my.ini),在[mysqld]部分插入如下两行

a) log-bin=mysql-bin //开启二进制日志 b) server-id=124 //设置server-id(一般设置为主机ip的后三位) 唯一性

保存,并重启mysql

service mysqld restart//重启mysql

在mysql命令行中输入,查看是否设置成功server-id

show variables like ‘server_id’;

配置从服务器的参数(slave) 找到从数据库的配置文件/etc/my.cnf(或者my.ini),在[mysqld]部分插入如下

log_bin = mysql-bin //开启二进制文件 server-id = 225 //设置server-id 从服务器ip主机的后三位 relay_log=relay-bin read_only=on #super_read_only=on //设置root账号的权限,一般不用设置 skip_slave_start = on master_info_repository = TABLE //存入表中 relay_log_info_repository=TABLE log-error=/var/log/mysqld.log //错误日志的文件 #log_slave_updates=1 //双主双从的情况 开启此参数 从库同步两个主库的内容 binlog-ignore-db = information_schema,mysql,performance_schema,sys

重启mysql服务

service mysqld restart//重启mysql

注意主服务器的uuid 和从服务器的uuid不能重复,否则导致复制失败

3:在master服务器上创建用于复制的数据库账号 用于IO进程链接master服务器获取binlog日志,需要 REPLICATION SLAVE 权限 进入MySQL命令行,创建MySQL用户并授权 用户名:repl 密码 :123456 (你们自定义哈) //创建用户 create user ‘用户名称’@‘ip段’ identified by ‘密码’;

create user ‘repl’@‘101.200.38.225’ identified by ‘123456’;

//赋予权限

GRANT REPLICATION SLAVE ON . TO ‘repl’@‘101.200.38.225’;

//刷新权限

FLUSH PRIVILEGES;

//查看master状态 获取二进制文件的名称和位置,用于在从服务器上配置主服务器账号的信息 在mysql命令行中输入

SHOW MASTER STATUS;

4:备份master服务器上的数据并初始化slavel服务器数据(从服务器为空省略此步骤) a)建议主从数据库服务器采取相同的mysql版本 注意master服务器的版本低于从服务器 b)建议使用全库备份的方式初始化从服务器(slave) 5:启动复制链路(从服务器上运行) 在mysql命令行中输入

//主服务器的信息 创建的账号信息 CHANGE MASTER TO MASTER_HOST=‘123.56.9.233’, MASTER_USER=‘repl’, MASTER_PASSWORD=‘123456’, MASTER_LOG_FILE=‘mysql-bin.000018’, MASTER_LOG_POS=3551;

在MySQL命令行执行以下命令启动slave同步进程

start slave;

查看slave状态

SHOW SLAVE STATUSG;

当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了。 验证: 主数据库建立数据库,删除数据库,插入数据表,备数据库是否即时同步

还可以用到的其他相关参数: master开启二进制日志后默认记录所有库所有表的操作,可以通过配置来指定只记录指定的数据库甚至指定的表的操作,具体在mysql配置文件的[mysqld]可添加修改如下选项: #不同步哪些数据库

binlog-ignore-db = mysql binlog-ignore-db = test binlog-ignore-db = information_schema

#只同步哪些数据库,除此之外,其他不同步

binlog-do-db = game

主从复制到此结束,有点啰嗦了

经验分享 程序员 微信小程序 职场和发展