参考文档: https://www.cnblogs.com/hankguo/p/8204868.html https://blog.csdn.net/xyang81/article/details/51792144
1,安装boost:需要安装python
通过日志查看 ./b2 -q
./bootstrap 缺少软件,pyconfig.h 安装python
fatal error: pyconfig.h: 没有那个文件或目录,只有pyconfig-64文件,并且最好安装py3.6
2,安装python
发现yum可执行文件错误:
- 网络问题:不正确
- yum文件格式问题
yum安装:可执行文件错误,解决:检查所有的头部文件,是否有#2.7以及缩进是否正确
https://blog.csdn.net/weixin_42350858/article/details/104819588
3,安装boost:
./boostrap
./b2
4,安装mysql
cd mysql
mkdir build
cmake . -DWITH_DEBUG=on \ .是指上层
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-8 \
-DMYSQL_DATADIR=/usr/local/mysql-8/data \
-DWITH_BOOST=/mydata/boost /解压目录
-DFORCE_INSOURCE_BUILD=1 /根据提示
-DWITH_SSL=system /openssl
make & make install
The source directory “/mydata” does not appear to contain CMakeLists.txt.
建立build目录,需要在上层.是指上层
6,创建用户以及用户组
7,复制配置文件
进入安装目录,复制/etc/my.cnf ->安装目录/ config,并命名,代表主从不同配置
8,编写配置文件:
注;将socket的位置更改为/tmp/socket 可以用端口命名sock文件,其他的根据自己情况,server-id主从必须不同 1/2,记得授权文件夹给mysql,无法执行某操作可以先授权
8,初始化并记住最后的初始密码
目录在mysql安装目录运行./bin/mysqld --defaults-file=/usr/local/mysql/conf/3306.cnf --initialize
9,运行mysql
文件根据你具体的位置来填写./bin/mysqld --defaults-file=/usr/local/mysql/conf/3306.cnf
10,进入客户端
新打开一个命令行,文件名称一定跟自己设置的一样./mysql -uroot -p123456 --socket=/usr/local/mysql/sock/3306.sock
设置密码ALTER USER root@localhost IDENTIFIED BY "root";
注:直接复制的sql一定注意字符’’等,否则会不正确
11,创建复制用户
新建一个复制帐户,用于从库复制binlog使用:
CREATE USER 'repl'@'%' IDENTIFIED WITH 'mysql_native_password' BY 'XXXX';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; 而不是127.0.0.1
flush privileges
//注意这里是mysql_native,防止了需要传递秘钥的errro
12,启动从库:
设置与主库相同,端口不同,以及server_id不同
13,在从库启动复制
stop slave; #停止slave
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=3306,MASTER_USER='repl',
MASTER_PASSWORD='root',MASTER_LOG_FILE='binlog.000001',MASTER_LOG_POS=1017;
// 指向主库设置,其中最后两个参数为master中查询出来的值 见下图 什么时候开始什么时候查询
start slave; #启动slave
14,查看状态
show slave status\G;
问题:
1,cnf文件指定错误,太乱 sock文件名错误:一定要指定自己的名称,配置文件,sock。
2,注意大小写mysql的语句
3,my.cnf不要自己建立,最好复制/etc/my.cnf
4,直接复制的sql语句可能符号不正确
5,以下错误在上文均已避免
Master command COM_REGISTER_SLAVE failed: Access denied for user ‘repl’@’%’ (using password: YES) (Errno: 1045)
错误原因:从服务器权限不足,在主服务器配置权限
在主服务器的客户端执行:
GRANT REPLICATION SLAVE ON . TO ‘repl’@’%’;
flush privileges;
6,
若报错:
error connecting to master ‘repl@192.168.0.101:3306’ - retry-time: 60 retries: 2 message: Authentication plugin ‘caching_sha2_password’ reported error: Authentication requires secure connection.
错误原因:密码加密方式不支持,
在主服务器执行以下命令:
ALTER USER ‘repl’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
FLUSH PRIVILEGES;
最后在主服务器解锁表
unlock tables;
命令行
netstat -nltp|grep mysql 查看端口
select user,host,plugin,authentication_string from mysql.user \G
查看用户./bin/mysqld --defaults-file=/usr/local/mysql-8/conf/my.cnf 运行
./mysql -uroot -proot --socket=/tmp/mysql3306.sock
进入
master:
gdb —args /repl/build/runtime_output_directory/mysqld —basedir=/usr/local/mysql-rep —datadir=/usr/local/mysql-rep/data/3308 —skip-grant-tables —bind-address=127.0.0.1 —port=3308 —socket=/tmp/sock/3308.sock —user=mysql
以gdb启动可以调试不在运行中的mysql,如果调试正在运行的,请使用attach
gdb运行后,多按两下回车,才能连接
top可以看端口
不同情况: 如果要调试启动过程,可以用gdb启动该程序,先打断点,然后run
rm -rf /usr/local/mysql-8/data/3306
rm -rf /usr/local/mysql-8/data/3307
初始化
/usr/local/mysql-8/bin/mysqld --defaults-file=/usr/local/mysql-8/config/3306.cnf --initialize-insecure
/usr/local/mysql-rep/bin/mysqld --defaults-file=/usr/local/mysql-rep/config/3308.cnf --initialize-insecure
运行
/usr/local/mysql-8/bin/mysqld --defaults-file=/usr/local/mysql-8/config/3306.cnf
/usr/local/mysql-rep/bin/mysqld --defaults-file=/usr/local/mysql-rep/config/3308.cnf
进入
/usr/local/mysql-8/bin/mysql -uroot --socket=/tmp/sock/3306.sock
/usr/local/mysql-rep/bin/mysql -uroot --socket=/tmp/sock/3308.sock
修改密码
ALTER USER root@localhost IDENTIFIED BY "root";
CREATE USER 'repl'@'%' IDENTIFIED WITH 'mysql_native_password' BY 'root';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
flush privileges
show master status
slave:
初始化
/usr/local/mysql-8/bin/mysqld --defaults-file=/usr/local/mysql-8/config/3307.cnf --initialize initialize-insecure
运行
/usr/local/mysql-8/bin/mysqld --defaults-file=/usr/local/mysql-8/config/3307.cnf
进入
/usr/local/mysql-8/bin/mysql -uroot -p --socket=/tmp/sock/3307.sock
修改密码
ALTER USER root@localhost IDENTIFIED BY "root";
stop slave; #停止slave
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=3306,MASTER_USER='repl',
MASTER_PASSWORD='root',MASTER_LOG_FILE='xx',MASTER_LOG_POS=xx;
// 指向主库设置,其中最后两个参数为master中查询出来的值 见下图 什么时候开始什么时候查询
start slave; #启动slave
show slave status\G;
[