mysql主从复制笔记(2台阿里云服务器 centos系统 mysql版本最好一致)1 配置Master主服务器在Master MySQL上创建一个用户‘dog’,并允许其他Slave服务器可以通过远程访问Master,通过该用户读取二进制日志,实现数据同步。
CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';GRANT REPLICATION SLAVE ON *.* TO 'dog'@'localhost';
ps:先localhost 然后再改成%, 然后从数据库登陆master数据库测试下 能不能连接上
2 找到MySQL安装文件夹修改my.cnf文件。mysql中有好几种日志方式,这不是今天的重点。我们只要启动二进制日志log-bin就ok。
server-id=1 //给数据库服务的唯一标识,一般为大家设置服务器Ip的末尾号 这个地方要注意不能出现relay-loglog-bin=master-binlog-bin-index=master-bin.index
然后重启mysql 运行如下
mysql> SHOW MASTER STATUS;+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000001 | 313 | | |+------------------+----------+--------------+------------------+1 row in set
3 设置slave数据库 这个地方要注意不能出现log-bin log-bin-index找到mysql配置文件
[mysqld] server-id=2 relay-log-index=slave-relay-bin.index relay-log=slave-relay-bin
重启MySQL服务
4 连接Master slave数据库命令输入如下 直接运行
change master to master_host='192.168.1.104',master_port=3306,master_user='dog',master_password='123456',master_log_file='master-bin.000001',master_log_pos=313;
如果报错了 那肯定是master权限问题 检查下master权限
5 启动Slavestart slave;
6查看slave状态是否成功
mysql> show slave status;
Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.104 //主服务器地址 Master_User: dog//授权帐户名,尽量避免使用root Master_Port: 3306 //数据库端口,部分版本没有此行 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 313 //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos Relay_Log_File: ddte-relay-bin.000003 Relay_Log_Pos: 251 Relay_Master_Log_File: mysql-bin.000004 Slave_IO_Running: Yes //此状态必须YES Slave_SQL_Running: Yes //此状态必须YES
ps:如果Slave_IO_Running显示conecting 那就是change master to master_hos李的参数写错了 仔细对应下 主数据库SHOW MASTER STATUS里的数据还有看看主服务器的mysql错误日志还有仔细看看主从数据库配置文件有没有写错
7在主服务器创建个数据库 试试 ps前期 主从数据库内容必须保持一致 不然会报错
mysql> create database dsd;Query OK, 1 row affected (0.00 sec)
mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || bird || dsd || hi_db || mysql || performance_schema || wordpress |+--------------------+7 rows in set (0.00 sec)
slave数据立马会更新
mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || dsd || mysql || performance_schema |+--------------------+4 rows in set (0.00 sec)
如果你要查看master 修改的二进制可以去master phpmyadmin 二进制可以查看 ps:原理就是master运行mysql语句 会更新到二进制日志 然后slave读取master的二进制日志 进行运行mysql语句比如 master执行了一条update语句 slave也会执行一条update语句 如果slave因为表结构跟master不一样 导致运行 sql出错 就会造成主从复制出错
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/4029.html