前提条件
- Centos7系统:192.168.6.220(master),192.168.6.221(slave) (安装Centos7和mysql在最后)
- mysql:mysql-5.6.49-linux-glibc2.12-x86_64.tar.gz(安装Centos7和mysql在最后)
搭建环境之前一定要快照、一定要快照、一定要快照
修改master结点
修改my.cnf文件
### 要求各个服务器的ID必须不一样 server-id=1 ### 开启bin log日志以及一些参数 log-bin=/var/log/mysql/mysql-bin innodb_flush_log_at_trx_commit = 1 sync_binlog = 1 ### 同步的数据库名称为dbname #binlog-do-db=dbname
创建bin-log目录并且赋予权限
mkdir /var/log/mysql chown mysql.mysql /var/log/mysql
确保在主服务器上 skip_networking
选项处于 OFF关闭状态, 这是默认值。如果是启用的,则从站无法与主站通信,并且复制失败。
创建一个专门用于复制数据的用户
###创建用户名为repl密码为123456的用户 CREATE USER 'repl'@'%' ; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' identified by '123456';
保证repl用户能正常访问数据
mysql -h127.0.0.1 -urepl -p
重启master上mysql服务
service mysqld restart
查看结点状态
show master status;
修改slave结点
修改my.cnf文件
[mysqld] server-id=2
重新启动mysql服务
service mysqld restart
与master建立连接
mysql>CHANGE MASTER TO MASTER_HOST = '192.168.6.221', MASTER_USER = 'repl', MASTER_PASSWORD = '123456', MASTER_PORT = 3306, MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 0; mysql>START SLAVE;
查看当前结点的状态
show slave status;
遇到的问题
如果master结点有数据单没开二进制文件,此时如何实现主从复制?
1)背备master数据库到slave数据库 2)开始master二进制文件 3)配置。。。
mysql错误1130或者mysql运行远程访问
mysql -u root -p use mysql; //修改密码 update user set password=password("123456") where user = "root" and host = "localhost"; //修改远程登录 update user set host='%' where host='localhost' and user='root'; //刷新 flush privileges; service mysqld stop service mysqld start