1、在阿里云服务器中修改my.cnf文件(一般在/etc/my.cnf)
代码如下 | 复制代码 |
[mysqld] |
2、来到从服务修改my.cnf
来源: https://yq.aliyun.com/ziliao/53330
代码如下 | 复制代码 |
[mysqld] log-bin=mysql-bin //[必须]启用二进制日志 server-id=2 //[必须]服务器唯一ID,默认是1,一般取IP最后一段 |
3、重启这两台服务器的mysql(第二台从服务器和第一台一样,这里就只写第一个的配置了)
一、启动方式
1、使用 service 启动:service mysqld start
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start
3、使用 safe_mysqld 启动:safe_mysqld&
二、停止
1、使用 service 启动:service mysqld stop
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop
3、 mysqladmin shutdown
三、重启
1、 使用 service 启动:service mysqld restart
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart
提问 编辑摘要
我自己的方式 “/etc/init.d/mysql restart”
4、登录主服务器为从服务器授权
代码如下 复制代码 GRANT REPLICATION SLAVE ON *.* to 'sync'@'%' identified by 'sync'; //不建议使用root 创建用户:
CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
4、登录主服务器为从服务器授权
代码如下 | 复制代码 |
GRANT REPLICATION SLAVE ON *.* to 'sync'@'%' identified by 'sync'; //不建议使用root |
“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用从服务器IP代替,如192.168.145.226,加强安全。
5、查看主服务器的状态
代码如下 | 复制代码 |
show master status; mysql> show master status; +------------------+----------+-----------------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+-----------------------+------------------+ | mysql-bin.000004 | 106 | wordpress,wordpress | mysql,mysql | +------------------+----------+--------------+---------------------------+ |
查看完状态就不要进行任何操作了,防止状态产生变化
6、登录从服务器配置
代码如下 | 复制代码 |
mysql> CHANGE MASTER TO -> MASTER_HOST = '主服务器地址', -> MASTER_USER ='刚才新建的帐号', -> MASTER_PASSWORD='新建的用户密码', -> MASTER_PORT=3306, -> MASTER_LOG_FILE='mysql-bin.000003', -> MASTER_LOG_POS=106; |
7、开启从服务器的复制功能
代码如下 | 复制代码 |
START SLAVE |
8、查看从服务器的状态
代码如下 | 复制代码 |
mysql> show slave statusG Slave_IO_Running = Yes |
这两个值必须为Yes,如果某一个为No就说说明主从是有问题的
如果会shell或python的话可以写一个检测脚本,检测这两个值是否都为Yes,如果有一个为No那就说明主从出现问题发邮件报警吧!
如果其中一个为yes的话你就需要检查一下了,我在操作的过程遇到了Slave_IO_Running为No了,这个时候你看一下 Last_IO_Error这里提示:error connecting to master ‘sync@218.244.**.**:3306′ – retry-time: 60 retries: 86400 (PS:**为打码),这里提示又无法连接到服务器,一般来说可能是帐号密码设置错误,或者服务器的防火墙给拦截了,经过检查阿里云开云盾开放了3306,但是没有还是不能,这个时候在从服务器直接登录,发现是空间商的问题,本地是可以的但是从服务器是没有办法登录。
9、这个时候你就可以在主服务器进行建表插入数据等等操作,看看从服务器是否已经同步了
可能在敲命令的时候敲错了一些东西,可以使用下边的sql语句进行修改
代码如下 | 复制代码 |
CHANGE MASTER TO MASTER_HOST='218.244.136.92'; //从服务器执行,意思是:修改主服务器的地址,底下意思相同 |
在执行的时候需要先停止从服务器的同步,
停止同步
代码如下 | 复制代码 |
SLAVE STOP 修改完成之后记得开启 |
以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库 , 日志 , 服务器 , 数据 , 代码 配置 mysql主从配置详解、mysql主从配置、mysql主从复制配置、mysql 主从同步配置、linux mysql主从配置,以便于您获取更多的相关知识。
注意点:主从复制,前提是从库要和主库有相同的库和表,要不会报
Last_SQL_Error: Error 'Table 'mydatabase.sutdent' doesn't exist' on query. Default database: 'mydatabase'. Query: 'insert into sutdent values(2,'2345')'
主从复制配置的关键属性:
File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 | 608 | mydatabase | mysql | |
+------------------+----------+--------------+------------------+-------------------+
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
设置从库只读:
# mysql -uroot -p mysql> show global variables like "%read_only%"; mysql> flush tables with read lock; mysql> set global read_only=1; mysql> show global variables like "%read_only%";
将MySQL从只读设置为读写状态的命令:
mysql> unlock tables; mysql> set global read_only=0;
对于需要保证master-slave主从同步的salve库,如果要设置为只读状态,需要执行的命令为:
mysql> set global read_only=1;
将salve库从只读状态变为读写状态,需要执行的命令是:
mysql> set global read_only=0;