• 安装Percona版本的MySQL主从复制


    准备两台虚拟机,按顺序执行1.1节的公共部分

    1.1

    首先安装 cmake

    # yum –y install cmake     //也需要安装gcc-c++,openssl openssl-devel。前面已经安装。

    # cd /usr/local

    # mkdir mysql

    # cd mysql /

    rz 上传安装包

    # tar -xvf Percona-Server-5.6.24-72.2-r8d0f85b-el6-x86_64-bundle.tar

    执行安装文件

    # rpm -ivh Percona-Server-56-debuginfo-5.6.24-rel72.2.el6.x86_64.rpm

    # rpm -ivh Percona-Server-shared-56-5.6.24-rel72.2.el6.x86_64.rpm

    # rpm -ivh Percona-Server-client-56-5.6.24-rel72.2.el6.x86_64.rpm

    # rpm -ivh Percona-Server-server-56-5.6.24-rel72.2.el6.x86_64.rpm

    安装顺序:rpm包很多,只需安装debuginfo、shared、client、server

    1.1.1    安装目录

    配置文件路径 /etc/my.cnf

    注意:安装完成后,会将配置文件放在etc目录下

    # vi /etc/my.cnf

    数据文件路径:/var/lib/mysql

    1.1.2    启动服务

    #  service mysql start      //自动安装到它自己制定的目录下,注册服务为mysql

    #  service mysql status

    #  service mysql stop

        配置开机启动:

    #  chkconfig --list         //展现开机的服务

    1.1.3    修改root密码

    默认没有密码不安全:

    #  mysqladmin -u root password "root"

     Warning警告提示,忽略即可。

    登录:

    # mysql -uroot -proot

    1.1.4    问题:PID file could not be found

    mysql无法启动ERROR! MySQL is running but PID file could not be found ?

    Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

    解决办法:

    # ps aux | grep mysql

    # kill -9 pid1 pid2     #pid1,pid2为具体的查询出来的端口

    # service mysql start 或者 /etc/init.d/mysql start

    1.1.5    错误:提示uuid重复

    由于data拷贝是全目录拷贝,将/var/lib/mysql/auto.cnf也拷贝,它里面记录了对数据库的一个uuid标识,随便产生个新的uuid,替换掉新目录中的auto.cnf中的uuid串即可。

    可以用select uuid()来产生新值,手工黏贴到auto.cnf文件中。

    1.1.6    验证是否成功安装

    # use mysql     //打开mysql数据库

    注意:Percona安装和mysql正式版的安装,在依赖上有区别。

    1.1.7    打开3306端口

    # /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

    # /etc/rc.d/init.d/iptables save      #修改生效

    # /etc/init.d/iptables status         #查看配置

    1.1.8    执行数据库的脚本

    创建库和数据库表及数据

    set names utf8;           #防止乱码

    1.1.9    开启MYSQL远程访问权限

    语法:

    grant [权限] on [数据库名].[表名] to ['用户名']@['web服务器的ip地址'] identified by ['密码'];

    # grant all on *.* to 'root'@'%' identified by 'root';

    或者指定IP地址

    # grant all on *.* to 'root'@'192.168.1.103' identified by 'root';

    执行flush使命令生效

    # FLUSH PRIVILEGES;

    1.2    主从复制Linux版本

    1.2.1    配置主服务器

    编辑主master服务器配置文件/etc/my.cnf

    在[mysqld]节点下加入两句话

    server-id=1

    log-bin=mysql-bin     #启用二进制日志;

    重启服务: 

    登录mysql:mysql -uroot -proot

    mysql>flush tables with read lock;  #数据库锁表,不让写数据

    mysql>show master status; #查看MASTER状态(这两个值File和Position)

    mysql>unlock tables;     #从启动好后,记得要解除锁定

    1.2.2    配置从服务器

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

    server-id=2

    重启服务

    service mysql restart

    通过mysql命令配置同步日志的指向:

    change master to master_host='192.168.29.131',master_port=3306,master_user='root',master_password='root',master_log_file='mysql-bin.000001',master_log_pos=120;

    master_host        主服务器的IP地址

    master_port        主服务器的PORT端口

    master_log_file   和主服务器show master status中的File字段值相同

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

    1.2.3    启动从服务

    start slave;             #stop slave;停止服务,出错时先停止,再重新配置

    show slave statusG;     #查看SLAVE状态,G结果纵向显示。必须大写

    注意:如果出错,可以看后面的错误信息。观察Slave_SQL_Running_State字段,它会记录详细的错误信息。如果正常,上面两个线程执行都应该是YES。这样当主库创建数据库、创建表、插入数据时,从库都会立刻同步,这样就实现了主从复制。

    1.2.4    扩展:同步日志

    binlog基本定义:二进制日志,记录对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存到磁盘中。

    作用:可以用来查看数据库的变更历史(具体的时间点所有的SQL操作)、数据库增量备份和恢复(增量备份和局域时间点的恢复)、MySQL的复制(主主数据库的复制、主从数据库的复制)

    二进制日志的信息:

    1)文件位置:默认存放位置为数据库文件所在目录下 /var/lib/mysql

    2)文件的命名方式:名称为hostname-bin.xxxxx (重启mysql一次将会自动生成一个新的binlog)

    3)状态的查看

    mysql> show variables like '%log_bin%';

    保存日志的格式是二进制不能直接查看,必须借助命令行工具才能阅读。mysql自带了mysqlbinlog工具,一般放置在mysql安装目录下的bin目录下执行

    mysqlbinlog mysql-bin.000001

    后面那个参数是日志文件,日志文件一般放在mysql的数据库存储文件目录下,以配置文件log-bin的值为文件名,一串000001这样的数字为扩展名。

  • 相关阅读:
    1115:直方图
    1114:白细胞计数
    1114:白细胞计数
    忘记mysql密码后重置密码
    pycharm中无法导入pip安装的包
    win7升级win10
    WIN7 Windows update提示不支持硬件
    getcwd() 和 os.path.realpath () 的区别
    selenium启动chrome时,弹出设置页面:Windows Defender 防病毒要重置您的设置
    ui测试如何检测页面差异
  • 原文地址:https://www.cnblogs.com/wangfg/p/10626494.html
Copyright © 2020-2023  润新知