ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

单机启动两个 mysql 并设置主备

2020-11-25 23:57:18  阅读:357  来源: 互联网

标签:log 单机 xsc 主备 mysql home data shicai


参考

https://www.jianshu.com/p/c994d13753ab
https://dev.mysql.com/doc/refman/8.0/en/mysqld-multi.html

下载

cd /home/shicai.xsc
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
tar -xvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
mv /home/shicai.xsc/mysql-5.7.18-linux-glibc2.5-x86_64 /home/shicai.xsc/mysql

创建目录

mkdir -p /home/shicai.xsc/mysql/data
mkdir /home/shicai.xsc/mysql/data/mysql1
mkdir /home/shicai.xsc/mysql/data/mysql2
mkdir -p /home/shicai.xsc/mysql/data/log
mkdir -p /home/shicai.xsc/mysql/data/log/mysql1
mkdir -p /home/shicai.xsc/mysql/data/log/mysql2

创建 mysql 用户和组

groupadd -r mysql
useradd -r -g mysql mysql

直接用 shicai.xsc 运行,不用创建 mysql 账户

授权

chown -R shicai.xsc /home/shicai.xsc/mysql

添加环境变量

echo ‘export PATH=$PATH:/home/shicai.xsc/mysql/bin’ >> /home/shicai.xsc/.profile
source /home/shicai.xsc/.profile

添加 /home/shicai.xsc/mysql/my.cnf

[client]
port=3306
socket=/home/shicai.xsc/mysql/mysql1.sock
[mysqld_multi]
mysqld = /home/shicai.xsc/mysql/bin/mysqld_safe
mysqladmin = /home/shicai.xsc/mysql/bin/mysqladmin
user=shicai.xsc
log = /home/shicai.xsc/mysql/data/log/mysqld_multi.log
[mysqld]
user=shicai.xsc
basedir =/home/shicai.xsc/mysql
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqld1]
server_id = 1
#skip-grant-tables=1
log_bin = mysql_bin
basedir =/home/shicai.xsc/mysql
user=shicai.xsc
mysqld=mysqld
mysqladmin=mysqladmin
datadir=/home/shicai.xsc/mysql/data/mysql1
port=3306
socket=/home/shicai.xsc/mysql/mysql1.sock
log-output=file
innodb_data_file_path=ibdata1:12M;ibdata2:10M:autoextend
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /home/shicai.xsc/mysql/data/log/mysql1/slow.log
log-error = /home/shicai.xsc/mysql/data/log/mysql1/error.log
[mysqld2]
server_id = 2
log_bin = mysql_bin
relay_log = mysql-relay-bin
user=shicai.xsc
#skip-grant-tables=1
basedir =/home/shicai.xsc/mysql
mysqld=mysqld
mysqladmin=mysqladmin
datadir=/home/shicai.xsc/mysql/data/mysql2
port=3307
innodb_data_file_path=ibdata1:12M;ibdata2:10M:autoextend
socket=/home/shicai.xsc/mysql/mysql2.sock
log-output=file
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /home/shicai.xsc/mysql/data/log/mysql2/slow.log
log-error = /home/shicai.xsc/mysql/data/log/mysql2/error.log

初始化数据库

以下步骤必须按顺序执行
cd /home/shicai.xsc/mysql

bin/mysqld --initialize --user=shicai.xsc --basedir=/home/shicai.xsc/mysql --datadir=/home/shicai.xsc/mysql/data/mysql1

bin/mysqld --initialize --user=shicai.xsc --basedir=/home/shicai.xsc/mysql --datadir=/home/shicai.xsc/mysql/data/mysql2

bin/mysql_ssl_rsa_setup --basedir=/home/shicai.xsc/mysql --datadir=/home/shicai.xsc/mysql/data/mysql1 --defaults-file=/home/shicai.xsc/mysql/my.cnf

bin/mysql_ssl_rsa_setup --basedir=/home/shicai.xsc/mysql --datadir=/home/shicai.xsc/mysql/data/mysql2 --defaults-file=/home/shicai.xsc/mysql/my.cnf

启动

/home/shicai.xsc/mysql/bin/mysqld_multi --defaults-file=/home/shicai.xsc/mysql/my.cnf start

查看状态

/home/shicai.xsc/mysql/bin/mysqld_multi --defaults-file=/home/shicai.xsc/mysql/my.cnf report
返回:
Reporting MySQL servers
MySQL server from group: mysqld1 is running
MySQL server from group: mysqld2 is running

修改 root 初始密码

/home/shicai.xsc/mysql/bin/mysqld_multi --defaults-file=/home/shicai.xsc/mysql/my.cnf stop

修改 /home/shicai.xsc/mysql/my.cnf

[mysqld1]
skip-grant-tables=1
[mysqld2]
skip-grant-tables=1

/home/shicai.xsc/mysql/bin/mysqld_multi --defaults-file=/home/shicai.xsc/mysql/my.cnf start

mysql -h127.0.0.1 -uroot -P3306

update mysql.user set authentication_string=PASSWORD(‘123456’) where User=‘root’;
flush privileges;

mysql -h127.0.0.1 -uroot -P3307
update mysql.user set authentication_string=PASSWORD(‘123456’) where User=‘root’;
flush privileges;

然后再从 /home/shicai.xsc/mysql/my.cnf 去掉 skip-grant-tables 并重启 mysql。

mysql -h127.0.0.1 -uroot -P3306 -p123456
mysql -h127.0.0.1 -uroot -P3307 -p123456

排错

如果遇到 /home/shicai.xsc/mysql/data/log/mysql2/error.log 一直报错:
2020-11-25T14:10:54.791228Z 0 [Note] InnoDB: Check that you do not already have another mysqld process using the same InnoDB data or log files.
2020-11-25T14:10:55.791311Z 0 [ERROR] InnoDB: Unable to lock ./ibdata1 error: 11
则:ps aux | grep mysql* 并杀死所有进程,然后重启 mysql。

如果先修改 my.cnf 再调用 /home/shicai.xsc/mysql/bin/mysqld_multi --defaults-file=/home/shicai.xsc/mysql/my.cnf stop,则停止没有生效,每次 /home/shicai.xsc/mysql/bin/mysqld_multi --defaults-file=/home/shicai.xsc/mysql/my.cnf start 都会碰到此问题。需要先停止再修改 my.cnf。

如果遇到 /home/shicai.xsc/mysql/data/log/mysql2/error.log 一直报错:
Could not open or create the system tablespace. If you tried to add new data files to the system tablespace, and it failed here, you should now edit innodb_data_file_path in my.cnf back to what it was, and remove the new ibdata files InnoDB created in this failed attempt. InnoDB only wrote those files full of zeros, but did not yet use them in any way. But be careful: do not remove old data files which contain your precious data!

则:修改 /home/shicai.xsc/mysql/my.cnf 并重启 mysql

[mysqld2]
innodb_data_file_path=ibdata1:12M;ibdata2:10M:autoextend 

设置主从同步

参考:http://www.tianshouzhi.com/api/tutorials/mysql/363

  • 主从库都创建用户
    GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO slave@‘localhost’ IDENTIFIED BY ‘slave’;

  • 检验 server_id 是否生效
    SHOW GLOBAL VARIABLES like ‘server_id’;
    返回值要符合 my.cnf 的配置,否则无法设置主从

  • 在丛库执行
    CHANGE MASTER TO
    MASTER_HOST=‘localhost’,
    MASTER_USER=‘slave’,
    MASTER_PORT=3306,
    MASTER_PASSWORD=‘slave’,
    MASTER_LOG_FILE=‘mysql_bin.000001’,
    MASTER_LOG_POS=0;

  • 在从库验证主库 binlog 信息
    mysql> show master status \G;
    *************************** 1. row ***************************
    File: mysql_bin.000002
    Position: 154
    Binlog_Do_DB:
    Binlog_Ignore_DB:
    Executed_Gtid_Set:
    1 row in set (0.00 sec)

  • 在丛库验证丛库同步状态
    mysql> show slave status\G;
    返回:Slave_IO_Running 和 Slave_SQL_Running 都为 0,说明丛库同步的关键两个线程 IO 和 SQL 都没有启动。
    *************************** 1. row ***************************
    Slave_IO_State:
    Master_Host: localhost
    Master_User: slave
    Master_Port: 3306
    Connect_Retry: 60
    Master_Log_File: mysql-bin.000001
    Read_Master_Log_Pos: 4
    Relay_Log_File: mysql-relay-bin.000001
    Relay_Log_Pos: 4
    Relay_Master_Log_File: mysql-bin.000001
    Slave_IO_Running: No
    Slave_SQL_Running: No

  • 丛库执行 start slave;

  • 再丛库验证丛库同步状态
    mysql> show slave status\G;
    发现 Slave_SQL_Running 线程起来了,但是 Slave_IO_Running 没有
    *************************** 1. row ***************************
    Slave_IO_State:
    Master_Host: localhost
    Master_User: slave
    Master_Port: 3306
    Connect_Retry: 60
    Master_Log_File: mysql-bin.000001
    Read_Master_Log_Pos: 4
    Relay_Log_File: mysql-relay-bin.000001
    Relay_Log_Pos: 4
    Relay_Master_Log_File: mysql-bin.000001
    Slave_IO_Running: No
    Slave_SQL_Running: Yes
    Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: ‘Could not find first log file name in binary log index file’
    其中 Last_IO_Error 提示错误如上。
    经查,发现是:CHANGE MASTER TO 命令的 MASTER_LOG_FILE 值写错了,找不到主库 binlog。
    解决之后,Slave_SQL_Running 和 Slave_IO_Running 都为 YES。

  • 验证主从同步生效
    修改主库数据,验证丛库数据跟着修改。

标签:log,单机,xsc,主备,mysql,home,data,shicai
来源: https://blog.csdn.net/justsomebody126/article/details/110151410

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有