mysql本机主从搭建

一、主从数据库准备

受限于资源,我们大家都可能会是在本机上安装多个mysql数据库搭建主从做为上手练习

1、分别拷贝绿色版mysql,放在不同路径下(如果是多台服务器的一定要确保2个相同版本的mysql)

2、修改my.ini文件里的端口信息、数据库路径信息、数据保存路径信息

3、分别进入bin目录下,使用管理员权限打开cmd命令窗口

4、使用mysqld安装服务:mysqld --install 服务名 --defaults-file=路径\my.ini

5、使用net start 服务名  启动服务

 如果出现启动服务立即停止的情况,到安装目录下执行了一下初始化 mysqld --initialize ,重新启动下服务即可。还有一种可能的情况是data这个目录没有一起拷贝过来,这个是需要拷的。

主从数据库服务安装好后,接下来是配置主从的工作:

二、master库配置

1、编辑mysql配置文件,my.int   (如果是linux则是my.cnf)

mysql配置文件

主要是增加了配置主从同步这一段

# 配置主从同步
# 节点ID,确保唯一
server-id=1
# 开启binlog二进制日志
log-bin=mysql-bin  
log-bin-index=master-bin.index #指定binlog文件的索引文件
max_binlog_size=500M #binlog的最大大小,超过会新建,同一语句不会跨文件
binlog_cache_size=128K #binlog缓存大小,执行SQL时会创建缓存
binlog-do-db=sharp #开启binlog的数据库
binlog-ignore-db=mysql #不开启的数据库
log-slave-updates#从库复制主库数据时更新binlog,从库做为其他从库的主库时这个参数很重要
expire_logs_days=2#日志保存天数,过期会清理
binlog_format="MIXED"#binlog日志格式,默认为statement,建议使用mixed

三、slave库配置

slave配置

主要配置了

server-id=2
#需要同步的数据库
replicate_do_db=sharp
#主从复制忽略的数据库
replicate_ignore_db=mysql

注意:每个库的server-id必须为不一样。

主从库的配置文件配置好之后,我们重启下两个数据库服务。

四、master库设置

1、在主库上,设置一个同步使用的账户,并授予 REPLICATION SLAVE权限,最后刷新下权限:

CREATE USER 'master'@'%' IDENTIFIED WITH mysql_native_password BY 'tinalucky';

GRANT REPLICATION SLAVE ON TO 'master'@'%';

FLUSH PRIVILEGES;

2、查看master的状态:

SHOW master status;

从这可以得到主库当前的二进制日志名和偏移量值。查年这个是为了下面步骤里设置从库接入MASTER的信息使用,目的是从这个日志文件、从这个位置开始进行数据的恢复。

本人电脑上得到的是file:mysql-bin.000010, position:829。

接下来开始slave库的设置

五、slave库设置

slave库的设置接入master库的信息,


    -> MASTER_HOST='localhost',     #主库机器IP
    -> MASTER_PORT=3308,             #主库的端口
    -> MASTER_USER='master',         #接入主库的账户
    -> MASTER_PASSWORD='tinalucky',    #接入主库的密码
    -> MASTER_LOG_FILE='mysql-bin.000010',   #主库日志文件
    -> MASTER_LOG_POS=829;                           #日志开始同步的偏移量

执行完以上配置后,主从基本搭建完全。检查下从库的状态:

show slave status\G;

从以上信息可以看出我们的配置是生效的。

下面我们可以测试下,在主库同步的sharp数据库下创建一个新表:

我们看下从库,已经同步过来:

在主库插入记录也一样会同步到从库。可以验证主从库搭建是成功的。

如果是拷贝的数据库的库可能会出现master and slave have equal MySQL server UUIDs的异常,那是因为主库和从库的UUIDS必须是不同的,主从mysql UUIDS相同, Slave_IO无法启动,报错信息如下:

The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
解决办法:修改mysql data 目录下auto.cnf 文件中uuid的值,使两台mysql不同即可,修改后重启mysql服务。

猜你喜欢

转载自blog.csdn.net/tinalucky/article/details/116709046