linux-msyql

### ubuntu msyql

安装MySQL

// Ubuntu 18.04.1 LTS apt-get 安装
$sudo apt-get install mysql-server

 apt会自动安装依赖库和client。默认安装目录 /etc/mysql。 安装后能够 service mysql status 查看MySQL状态html

 

重设密码

安装MySQL没有提示设置密码,有时会出现进不去MySQL客户端的状况,一是密码不对,二是没有设置默认密码mysql

报错:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)web

两种办法登陆后修改密码sql

方法一:跳过验证登陆

// 1.中止服务
$sudo /etc/init.d/mysqld stop
// 2.跳过验证 在[mysql]组下添加一行:skip-grant-tables   
$sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
// 3.启动服务
$sudo /etc/init.d/mysqld start
// 4.免密码登陆后设置密码
$use mysql
$update user set authentication_string=password('123456') where User='root'
$flush privileges
// 5.删除:skip-grant-tables
$sudo vim /etc/mysql/mysql.conf.d/msyqld.cnf
// 6.重启服务
$sudo /etc/init.d/mysqld restart

方法二:默认密码登陆

// Ubuntu默认密码所在文件 
// 找到password对应的值 登陆数据库 而后修改密码 退出重启(重复方法一456步)
sudo cat /etc/mysql/debian.cnf

方法三:版本较高的mysql可能第一次不须要输入密码数据库

mysql -u rootubuntu

MySQL 容许远程访问

默认状况下 MySQL不容许远程连接,程序交互时可能须要开启。vim

// 打开配置文件,注释掉绑定IP(bind-address) 或 指定可连接的ip或 bind-address=*.
$sudo vim /etc/mysql/my.cnf 
// 登陆MySQL 修改数据表,受权root用户在任意ip('%')访问任意数据库(*.*)的任意权限(all privileges).生产环境能够指定固定用户名和固定的ip地址。
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
// 退出重启数据库
$sudo service mysqld restart

 

mysql配置双主备份

数据库备份原理主要是是读取其余数据库变动的语句,而后在本地执行一遍,保证内容一致。在主备模式下,主数据库将操做写入一个log文件中,从数据库建立一个channel,开启一个读文件线程,读取主的log变更保存到本地文件,另外一个执行语句线程执行拉取来的log文件中的sql语句来同步。开始配置前先保证双方MySQL都容许远程访问。先配置主从模式,主主反向再配置一遍便可。安全

假定两台服务器:192.168.10.100为主,192.168.10.101为备。服务器

配置同步前,最好保证主从数据库的初始状态一致。 并发

 

同步初态步骤
//一、将主服务器要同步的数据库加锁,避免同步时发生改变。
mysql> use database_name;
mysql> flush tables with read lock; 
//2、使用mysqldump工具导出数据:
msyql> mysqldump
-uroot -pxxx database_name >database_name.sql
//3、备份完成后,解锁数据库:
mysql> unlock tables;
//4、将初始数据导入从数据库:
mysql> create database database_name;
mysql
>use database_name;
mysql>
source database_name.sql;

 

 

配置主:

配置前,登陆100的MySQL输入: show master status\G;   显示 Empty set;

//编辑MySQL配置文件,在[mysqld]下面添加一些配置信息,保存后重启MySQL。
$sudo vim /etc/mysql/my.cnf

 

 
 
#主数据库id为1,不能相同。
server-id=1
#开启二进制日志,指定名字为mysql-bin
log-bin=mysql-bin
#中继日志名,复制线程先把远程变化复制到此日志,再执行
relay_log=mysqld-relay-bin
#中继日志执行后,变化是否须要计入本身的bianary-log,当此服务器作另外一个服务器的主服务器,须要打开。
log-slave-updates=1

#须要同步的库,不指定默认同步所有库                            
binlog-do-db=dh_sign  
#主库支持读写操做,若读写分离可配置1
#read-only=0


##也能够配置不须要同步的库,其余库同步
#binlog-ignore-db=information_schema
#binlog-ignore-db=sys
#binlog-ignore-db=perfromance_schema

##最安全的设置,每次提交事务以前会将二进制同步到磁盘上,保证服务器崩溃时不会丢失事件
sync_binlog=1

##自增设置,在双主均可以写入时,会产生自增主键的冲突问题,配置错落自增。自增间隔n是可写的mysql实例数量
auto-increment-increment=2
auto-increment-offset=1

#GTID模式
gtid-mode=on
enforce-gtid-consistency=1

## slave并发优化
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=16
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON

保存退出,并重启MySQL。 service mysqld restart; 

再次登陆MySQL,输出主的状态。  mysql> show master status\G;   显示为:

mysql> show masterstatus\G;
*************************** 1. row ***************************
             File: mysql-bin.000059
         Position: 1046
     Binlog_Do_DB: dh_sign
 Binlog_Ignore_DB:
Executed_Gtid_Set: e18aca99-033b-11e9-a3d7-90f1b0f14435:1-46,
f6ea3916-feb6-11e8-9084-04d3b0eb5843:1-71
1 row in set (0.00 sec)

ERROR:
No query specified

能够看到log文件名,同步log的起始位置、log记录的库和忽略库、Gtid编号信息,说明配置成功。关于Gtid能够查看:

Gtid-weblog-1

Gtid-weblog-2

 

配置从:

登陆从服务器(101)的mysql,查看从服务的状态: show slave status\G; 一样显示为空。

// 若是开启了Gtid,直接执行此条语句,指定主服务便可。
mysql> change master to master_host='192.168.10.100',master_user='root',master_password='123456',master_port=3306,master_auto_position=1;

// 若是没有开启,须要指定log文件位置等。master_log_file和master_log_pos为刚查看的主库的log文件和位置。
# mysql> change master to master_host='192.168.10.100',master_user='root',master_password='123456',master_log_file='mysql-bin.000059',master_log_pos=1046;

// 设置主服务可能会有报错信息,按相关提示输入指令便可,可能涉及到以下指令:
# STOP SLAVE IO_THREAD FOR CHANNEL '';
# START SLAVE IO_THREAD FOR CHANNEL '';
# STOP SLAVE;
# RESET SLAVE;// 内存中依然保存主库ip,port等
# RESET SLAVE ALL; // 清空全部slave配置,show slave status\G,为空。

退出mysql后再次进入(或重启),再次查看从状态: show slave status\G; 显示为:

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.10.239
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000016
          Read_Master_Log_Pos: 36050
               Relay_Log_File: mysqld-relay-bin.000231
                Relay_Log_Pos: 454
        Relay_Master_Log_File: mysql-bin.000016
             Slave_IO_Running: Yes
            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: 36050
              Relay_Log_Space: 915
              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: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 2
                  Master_UUID: e18aca99-033b-11e9-a3d7-90f1b0f14435
             Master_Info_File: mysql.slave_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: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: e18aca99-033b-11e9-a3d7-90f1b0f14435:46
            Executed_Gtid_Set: e18aca99-033b-11e9-a3d7-90f1b0f14435:1-46,
f6ea3916-feb6-11e8-9084-04d3b0eb5843:1-71
                Auto_Position: 1
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
1 row in set (0.00 sec)

ERROR: 
No query specified
Slave_IO_Running和Slave_SQL_Running的值都为Yes时证实能够从主库自动同步了,能够在主库100 insert,在101 select或delete验证是否同步。
至此主从配置完成,要配置双主,只要将步骤反过来再作一遍便可,注意主从server-id配置不能相同。

配置时发现有时会出现主服务在重启时会改变log文件和位置信息,可能致使从服务配置失效。应按顺序来配置。如出现错误,尝试从服务配置后不重启,从新登陆便可。
相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息