2021-05-19 mysql主从配置操作

环境两台服务器[一主一从]

服务器IP                       Centos版本                                                        服务

192.168.10.152       CentOS Linux release 7.6.1810 (Core)            MYSQL5.7(主)

192.168.10.153       CentOS Linux release 7.6.1810 (Core)            MYSQL5.7(从)


root用户操作


一、MySQL安装


1、关闭防火墙

sudo systemctl stop firewalld && setenforce 0


2、检查有没有MySQL的服务

rpm -qa | grep -i mysql

卸载:rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64

rpm -qa | grep mariadb

卸载mariadb(centos7默认安装):rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

3、 将mysql的包上传到/usr/local/src,并解压到/usr/local目录下

cd  /usr/local/src

tar -xzvf  mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz  -C  /usr/local/

cd   /usr/local/

mv  mysql-5.7.18-linux-glibc2.5-x86_64  mysql-5.7.18

ln  -s  /usr/local/mysql-5.7.18   /usr/local/mysql

4、创建mysql用户

groupadd mysql   ----创建mysql用户组组

useradd -r -g mysql mysql   ----创建mysql用户并添加到mysql用户组中

chown -R mysql:mysql /usr/local/mysql/     ----将mysql目录访问权限赋为myql用户

5、新建数据目录和日志目录

日志目录:

cd /var/log/

touch mysqld.log

chmod 777 mysqld.log

chown mysql:mysql mysqld.log

数据目录:

mkdir -p  /usr/local/mysql/data

chown -R mysql:mysql   /usr/local/mysql/data

pid目录

cd /var/run/

mkdir mysqld

chmod 777 mysqld

cd mysqld

touch mysqld.pid

chmod 777 mysqld.pid &&  chown mysql:mysql mysqld.pid

6、创建配置文件

vim /etc/my.cnf

复制以下内容

[client]

port = 3306

default-character-set = utf8

socket = /tmp/mysql.sock

[mysqld]

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

socket = /tmp/mysql.sock

symbolic-links=0

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

log_bin_trust_function_creators=1

lower_case_table_names=1

sql_mode=

transaction_isolation=READ-COMMITTED

binlog_format=mixed

max_allowed_packet=104857600

character-set-server = utf8

collation-server = utf8_general_ci

max_connections=1000

max_user_connections=500

interactive_timeout = 28800

wait_timeout = 28800

net_read_timeout = 28800

net_write_timeout = 28800

connect_timeout = 28800

7、初始化数据库 --------一整条命令

初始化

cd /usr/local/mysql/bin/

./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_US

查看日志查找root密码

cat  /var/log/mysqld.log|grep  root@localhost


8、启动mysql并登陆数据库修改root密码

启动mysql


/usr/local/mysql/support-files/mysql.server start 或者 service mysqld start

/usr/local/mysql/bin/mysqld_safe &

登陆mysql

/usr/local/mysql/bin/mysql -uroot -p 

如果一直提示错误,修改配置文件/etc/my.cnf,登录数据库时跳过输入密码

skip-grant-tables

重启mysql

/usr/local/mysql/support-files/mysql.server restart  或者  service mysqld restart

/usr/local/mysql/bin/mysql -uroot -p    --------不需要密码即可登录

修改新的root密码

update mysql.user set authentication_string=password('1qaz@WSX') where user='root' ;

注释掉/etc/my.cnf配置文件中的skip-grant-tables

重启mysql 

/usr/local/mysql/support-files/mysql.server restart 或者 service mysqld restart

登录

/usr/local/mysql/bin/mysql -uroot -p1qaz@WSX 

9、设置开机自动启动

cd /usr/local/mysql/support-files

cp mysql.server /etc/init.d/mysqld

chkconfig --add mysqld

10、建立软连接

 ln -s /usr/local/mysql/bin/mysqld   /usr/bin

二、主从数据库配置

1、修改配置文件

1、配置Master主库机器---192.168.10.152

vim  /etc/my.cnf

server-id=1   ##当前数据库在集群中的id值

log-bin=mysql-bin   ##启用二进制日志;key值的名字不能变,value表示你定义 的二进制文件的名字.可以自定义

登录mysql

/usr/local/mysql/bin/mysql -uroot -p1qaz@WSX

mysql>flush tables with read lock; #数据库锁表,不让写数据;这步骤可不做 对于当前环境的mysql无需使用lock命令,因为没有人操作,但是生产环境中必须这样做


ALTER USER 'root'@'localhost' IDENTIFIED BY '1qaz@WSX';


mysql>GRANT REPLICATION SLAVE ON *.* to 'root'@'%'  identified by '1qaz@WSX';

mysql>show master status; #查看MASTER状态(这两个值File和Position)其中的file就是二进制文件,position记录当前操作sql的步骤数(注意一条sql包含多步,所以不是sql语句的条数)


2、配置从库服务器---192.168.10.153

修改/etc/my.cnf增加一行

vim /ect/my.cnf

server-id=2

重启服务

/usr/local/mysql/support-files/mysql.server restart 或者 service mysqld restart

登录mysql

/usr/local/mysql/bin/mysql -uroot -p1qaz@WSX

通过mysql命令配置同步日志的指向: 登录到从节点的mysql客户端(linux,sqlyog)

mysql>change master to

      master_host='192.168.10.152',

      master_port=3306,

      master_user='root',

      master_password='1qaz@WSX',

      master_log_file='mysql-bin.000001',   ###和主服务器show master status中的File字段值相同

      master_log_pos=398;   ##和主服务器show master status中的Position字段值相同


mysql>start slave;       #开启从节点服务状态;stop slave;停止服务,出错时先停止停止参考下方操作,再重新配置

mysql>show slave status\G    #查看SLAVE状态,\G结果纵向显示。必须大写,这个命令无法再sqlyog中使用,linux客户端使用的;

测试不通过:

mysql>show slave status\G

*************************** 1. row ***************************

              Slave_IO_State: Connecting to master

                  Master_Host: 192.168.10.152

                  Master_User: root

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql-bin.000001

          Read_Master_Log_Pos: 398

              Relay_Log_File: crop003-relay-bin.000001

                Relay_Log_Pos: 4

        Relay_Master_Log_File: mysql-bin.000001

            Slave_IO_Running: Connecting

            Slave_SQL_Running: Yes

              Replicate_Do_DB:

          Replicate_Ignore_DB:

          Replicate_Do_Table:

      Replicate_Ignore_Table:

      Replicate_Wild_Do_Table:

  Replicate_Wild_Ignore_Table:

                  Last_Errno: 0

                  Last_Error:

                Skip_Counter: 0

          Exec_Master_Log_Pos: 398

              Relay_Log_Space: 154

              Until_Condition: None

              Until_Log_File:

                Until_Log_Pos: 0

          Master_SSL_Allowed: No

          Master_SSL_CA_File:

          Master_SSL_CA_Path:

              Master_SSL_Cert:

            Master_SSL_Cipher:

              Master_SSL_Key:

        Seconds_Behind_Master: NULL

Master_SSL_Verify_Server_Cert: No

                Last_IO_Errno: 1130

                Last_IO_Error: error connecting to master 'root@192.168.10.152:3306' - retry-time: 60  retries: 5

              Last_SQL_Errno: 0

              Last_SQL_Error:

  Replicate_Ignore_Server_Ids:

            Master_Server_Id: 0

                  Master_UUID:

            Master_Info_File: /usr/local/mysql/data/master.info

                    SQL_Delay: 0

          SQL_Remaining_Delay: NULL

      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates

          Master_Retry_Count: 86400

                  Master_Bind:

      Last_IO_Error_Timestamp: 210520 11:17:34

    Last_SQL_Error_Timestamp:

              Master_SSL_Crl:

          Master_SSL_Crlpath:

          Retrieved_Gtid_Set:

            Executed_Gtid_Set:

                Auto_Position: 0

        Replicate_Rewrite_DB:

                Channel_Name:

          Master_TLS_Version:

1 row in set (0.00 sec)

mysql> quit

停掉从库

1.

mysql> stop slave io_thread;

2.

mysql> show status like 'Slave_open_temp_tables';

3.

如果'Slave_open_temp_tables'不为0,就执行如下,否则跳到第四步

mysql> start slave io_thread

4.

#service mysqld stop

即先停主从的IO进程,确认临时表上的更新是否都写入磁盘,临时表是否为0,若不为0,等IO完了,再关从库

存在临时表的数据更新步骤,主从同步中调用IO_thread,将主库的binlog日志同步到从库

报错问题

解决办法:

1.先关闭当前的slave;

mysql>stop slave;

2.检查主服务器的配置信息:

vi /etc/my.cnf   # 文件末尾查看追加

server-id=1  

log-bin=mysql-bin 

binlog-format=ROW 

 binlog-do-db=msb

3.重启mysqld

service mysqld restart

4.查看主的状态信息,在主MySQL下

/usr/local/mysql/bin/mysql -uroot -p1qaz@WSX

mysql>show master status; 

记住Position,


进入从库重新关联,从库设置成功,show slave status\G不再报错:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容