当前位置:   article > 正文

linux mysql主从配置_linux下mysql主从配置

linux下配置mysql主从配置

还可以参考:https://www.cnblogs.com/Halifa/archive/2016/08/23/5799566.html

一、主服务器相关配置

1、创建同步账户并指定服务器地址

[root@localhost ~]mysql -uroot -p

mysql>use mysql

mysql>grant replication slave on *.* to 'testuser'@'192.168.1.102' identified by '12345678';

mysql>flush privileges; #刷新权限

授权用户testuser只能从192.168.1.102这个地址访问主服务器192.168.1.101的数据库,并且只具有数据库备份的权限

2、修改/etc/my.cnf配置文件vi /etc/my.cnf

[mysqld]下添加以下参数,若文件中已经存在,则不用添加

server-id=1

log-bin=mysql-bin  #启动MySQL二进制日志系统,

binlog-do-db=ourneeddb  #需要同步的数据库

binlog-ignore-db=mysql  #不同步mysql系统数据库,若还有其它不想同步的,继续添加

[root@localhost ~]/etc/init.d/mysqld restart #重启服务

3、查看主服务器master状态(注意File与Position项,从服务器需要这两项参数)

mysql> show master status;

+------------------+----------+--------------+------------------+

| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000012 |      120 | ourneeddb| mysql            |

+------------------+----------+--------------+------------------+

4、导出数据库

导出数据库之前先锁定数据库

flush tables with read lock;    #数据库只读锁定命令,防止导出数据库的时候有数据写入

unlock tables; #解除锁定

导出数据库结构及数据:mysqldump -uroot -p ourneeddb > /home/ourneeddb.sql

导出存储过程及函数 :mysqldump -uroot -p -ntd -R ourneeddb > ourneeddb_func.sql

tips:-ntd导出存储过程、-R导出函数

二、从服务器相关配置

1、修改/etc/my.cnf配置文件vi /etc/my.cnf

[mysqld]下添加以下参数,若文件中已经存在,则不用添加

server-id=2  #设置从服务器id,必须于主服务器不同

log-bin=mysql-bin  #启动MySQ二进制日志系统

replicate-do-db=ourneeddb  #需要同步的数据库名

replicate-ignore-db=mysql  #不同步mysql系统数据库

[root@localhost~ ]/etc/init.d/mysqld restart #重启服务

2、导入数据库

导入过程这里不做阐述

3、配置主从同步

[root@localhost~ ]mysql -uroot -p

mysql>use mysql

mysql>stop slave;

mysql>change master to

master_host='192.168.1.101',

master_user='testuser',

master_password='12345678',

master_log_file='mysql-bin.000012',

master_log_pos=120;  #log_file与log_pos是主服务器master状态下的File与Position

mysql>start slave;

mysql>show slave status\G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.1.101

Master_User: testuser

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000012

Read_Master_Log_Pos: 120

Relay_Log_File: orange-2-relay-bin.000003

Relay_Log_Pos: 283

Relay_Master_Log_File: mysql-bin.000012

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB: orange

Replicate_Ignore_DB: mysql,test,information_schema,performance_schema

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 120

Relay_Log_Space: 1320

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1

Master_UUID: 773d2987-6821-11e6-b9e0-00163f0004f9

Master_Info_File: /home/mysql/master.info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set:

Executed_Gtid_Set:

Auto_Position: 0

注意查看Slave_IO_Running: Yes  Slave_SQL_Running: Yes 这两项必须为Yes 以及Log_File、Log_Pos要于master状态下的File,Position相同

如果都是正确的,则说明配置成功!

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

常见错误原因:

https://www.linuxidc.com/Linux/2012-03/57708.htm

https://blog.csdn.net/jasontech/article/details/39435873

1从服务器配置下列两项,一定要跟主服务器一致

master_log_file='mysql-bin.000012',

master_log_pos=120;  #log_file与log_pos是主服务器master状态下的File与Position

2  报错 Slave_IO_Running: NO

(1)

这个错误就是IO 进程没连接上  ,想办法连接上把 把与主的POS 号和文件一定要对,然后重新加载下数据。具体步骤:

stop   slave ;

change master to master_host='IP地址',master_user='club',master_password='mima ',master_log_file='mysqld-bin.000048',MASTER_LOG_POS=396549485;

注:master_log_file='mysqld-bin.000048',MASTER_LOG_POS=396549485;是从主的上面查出 来的 :show master status\G;

LOAD DATA FROM MASTER;

load data from master;

start   slave ;

(2)查看主数据库错误日志 查找原因

[ERROR] Slave I/O: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: 1593

我是在虚拟机下 两台机子克隆复制  所以两台机子中配置文件中uuid一致  随机修改一下 就解决了

错误原因:由于主机和备机的UUID一致

解决方法:修改UUID保证主备机不一致  到安装目录data下的auto.cnf  修改uuid即可(cd   /usr/local/mysql/data)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/932147
推荐阅读
相关标签
  

闽ICP备14008679号