如何实现两个mysql数据库之间的主从同步?

2024-12-02 04:01:29
推荐回答(3个)
回答1:

  • 配置主的配置文件

    vi /etc/my.cnf

  • 创建复制用户并授权给从服务器

    grant replication slave on *.* to 'rpl'@'192.168.162.130' identified by '123456';

  • 重启主服务器的MySQL  /etc/init.d/mysqld restart

  • 查看master信息: 进入MySQL  show master status \G;

  • 修改从库配置文件

    vi /etc/my.cnf

  • 重启从服务器MySQL,进入MySQL

  • 指定主服务器IP等信息

    change master to master_host='192.168.162.128 ',master_user='rpl',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=647;

  • 启动slave  :start slave;

  • 查看slave状态:show slave status \G;

  • 报错Last_IO_Error: 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

    意思是主和从必须都要有不同的uuid,我们分别去查看下主从的uuid

    主:server-uuid=4e6c5a78-1e9a-11e7-8c65-000c29426312

    查看从库uuid  从库uuid:server-uuid=4e6c5a78-1e9a-11e7-8c65-000c29426312

    可以看出是真的一样,原因在于 我是先安装了一个虚拟机并装好MySQL,后面有复制了一遍,作为从服务器,所以导致了这个UUID是一样的。

    接下来就是解决这个UUID问题,将从库上的auto.cnf 备份下。然后重启从库。再看下从库的UUID

    [auto]

    server-uuid=2e9c834a-1eb2-11e7-864b-000c2928472e

    再次查看从库状态

    从库状态正常了

    11.测试主从是否正常

    主库上创建一个测试库,test :create database test;

    创建测试表:

    create table test.test(

    id int,

    username varchar(10)

    )ENGINE='innodb'

    12.查看从库: 

    正常,说明主从搭建成功

回答2:

每次在session_start();会产生一个一样的SID,把数据库表sesskey列设置为主键或惟一键即可解决。注:你多刷新几次你的测试代码,然后去数据库查一下会发现有多个重复的SID!

回答3:

我也不是太懂,推荐一篇文档,希望对你有帮助吧
http://blog.chinaunix.net/uid-20639775-id-3254611.html