美文网首页
windows mysql8 Master Slave 离线包安

windows mysql8 Master Slave 离线包安

作者: 啊布多 | 来源:发表于2021-12-21 20:03 被阅读0次

    下载mysql8 https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.26-winx64.zip

    配置

    准备配置文件 my.ini,存放于mysql根目录下

    [mysqld]

    开启二进制日志

    log-bin=mysql-bin

    设置server-id

    server-id=1
    read-only=1 #从服务器添加此,设置数据库只读

    设置3311端口

    port=3311

    自定义设置mysql的安装目录,即解压mysql压缩包的目录

    basedir=D:\Server\mysql-Master

    自定义设置mysql数据库的数据存放目录

    datadir=D:\Server\mysql-Master\data

    允许最大连接数

    max_connections=200

    允许连接失败的次数,这是为了防止有人从该主机试图攻击数据库系统

    max_connect_errors=10

    服务端使用的字符集默认为UTF8

    character-set-server=utf8

    创建新表时将使用的默认存储引擎

    default-storage-engine=INNODB

    默认使用“mysql_native_password”插件认证

    default_authentication_plugin=mysql_native_password

    [mysql]

    设置mysql客户端默认字符集

    default-character-set=utf8

    [client]

    设置mysql客户端连接服务端时默认使用的端口和默认字符集

    port=3311
    default-character-set=utf8

    复制Mysql程序为三份,分别命名为Master,Slave1,Slave2

    修改My.ini文件端口号分别为 3311,3312,3313

    Server-id 分别设置为 1,2,3

    Master重启mysql,创建用于同步的用户账号

    创建用户

    CREATE USER 'repl'@'%' IDENTIFIED BY 'slavepass';

    分配权限

    GRANT REPLICATION SLAVE ON . TO 'repl'@'%';

    刷新权限

    flush privileges;

    查看master状态,记录二进制文件名(mysql-bin.000003)和位置(73):

    SHOW MASTER STATUS;

    重启Slave mysql,打开mysql会话,执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置):

    CHANGE MASTER TO
    -> MASTER_HOST='182.92.172.80', #MASTER服务主机地址
    -> MASTER_PORT=3311,
    -> MASTER_USER='rep1',
    -> MASTER_PASSWORD='slavepass',
    -> MASTER_LOG_FILE='mysql-bin.000003',
    -> MASTER_LOG_POS=73;

    启动slave同步进程:

    start slave;

    查看slave状态:

    show slave status\G;
    当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了。接下来就可以进行一些验证了,比如在主master数据库的test数据库的一张表中插入一条数据,在slave的test库的相同数据表中查看是否有新增的数据即可验证主从复制功能是否有效,还可以关闭slave(mysql>stop slave;),然后再修改master,看slave是否也相应修改(停止slave后,master的修改不会同步到slave),就可以完成主从复制功能的验证了。

    还可以用到的其他相关参数:

    master开启二进制日志后默认记录所有库所有表的操作,可以通过配置来指定只记录指定的数据库甚至指定的表的操作,具体在mysql配置文件的[mysqld]可添加修改如下选项:

    不同步哪些数据库

    binlog-ignore-db = mysql
    binlog-ignore-db = test
    binlog-ignore-db = information_schema

    只同步哪些数据库,除此之外,其他不同步

    binlog-do-db = game

    启动

    初始化MySQL

    mysqld --initialize-insecure --user=mysql8-master
    可能报错:没有msvcr120.dll文件

    网上下载 msvcr120.dll 文件
    复制到 C:WindowsSystem32目录下
    再次执行初始化操作

    安装服务

    mysqld install [服务名] # 安装mysql 服务
    net start mysql # 启动服务

    删除服务

    sc delete <服务名> 或 mysqld --remove

    登录数据库

    第一次无密码,直接回车

    mysql -u root -p

    显示所有数据库

    show databases;

    使用某个库

    use mysql;

    更改root密码

    update mysql.user
    set authentication_string = password('123456') ,
    password_expired = 'N'
    where User = 'root'
    AND Host = 'localhost';
    如果报错就用

    alter user 'root'@'localhost' identified by '123456';

    刷新权限

    flush privileges;

    Master重新启动后需要修改Salve配置

    CHANGE MASTER TO
    MASTER_HOST='172.16.98.133',
    MASTER_PORT=3311,
    MASTER_USER='master',
    MASTER_PASSWORD='123456',
    MASTER_LOG_FILE='mysql-bin.000003',
    MASTER_LOG_POS=98;

    START Slave;

    SHOW SLAVE STATUS;

    注:
    问题:Slave_SQL_Running:no
    解决办法:

    Stop slave;
    SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
    START SLAVE;
    问题:Slave_SQL_Running:no
    解决办法:
    Stop slave;
    CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000026', MASTER_LOG_POS=0; #mysql-bin.000026 是通过SHOW MASTER STATUS;查询
    START SLAVE;

    相关文章

      网友评论

          本文标题:windows mysql8 Master Slave 离线包安

          本文链接:https://www.haomeiwen.com/subject/ondxqrtx.html