• Opret dig
  • Glemt adgangskode

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log ind
Hjem
LinuxIN.dk

Snak med

Opret dig!

Af peque | 25.04.2017 09:43

[LØST] Bash script problemer

Hjælp generelt
Hejsa.
Jeg skal lave et script der udgør følgende - skal laves i Bash

1. tjekker et bibliotek for den nyeste fil med navn mysql-bin.XXXXXX <-- hvor XXX er et tal
2. Det tal der står efter . i filnavnet skal plusses med 1 - dvs hvis filen hedder mysql-bin.000022 - skal den komme ud med tallet 000023

Det er for at lave en automatiseret MySQL repair af binlog/replikering - således hvis maskinen stopper uhensigtsmæssigt - så starter den op og reparerer replikeringschannel.

Hvordan kan jeg nemmest lave dette i bash ?
Jeg tænker noget i den stil

OUTPUT=`find mysql-* -type f -printf "%T@ %p\n" | sort -n | cut -d' ' -f 2- | tail -n 1`
NEW=`echo $OUTPUT | rev | cut -d'.' -f 1 | rev `
echo $OUTPUT --> Giver mysql-bin.000022
echo $NEW --> Giver 000022

echo "$DATE - finding the last binlog file"
$NEW=`$NEW + 1`
echo $NEW --> giver stadig 000022
Hvor det skulle være 000023 istedet for som den sidste.
Hvordan kan jeg lave dette ?


  • Log ind eller opret dig for at tilføje kommentarer

Kommentarer4

# 1

8 år 9 måneder siden

Permalink

Indsendt af ejvindh den 25. april 2017 kl. 11:49

Permalink

Prøv at udskifte din 6.

Prøv at udskifte din 6. kodelinie med følgende:
let NEW="$(($NEW + 1))"
  • Log ind eller opret dig for at tilføje kommentarer

# 2

8 år 9 måneder siden

Permalink

Indsendt af peque den 26. april 2017 kl. 06:58

In reply to Prøv at udskifte din 6. by ejvindh

Permalink

Hej Ejvind.
Testet og det

Hej Ejvind.
Testet og det fungerer ikke

mysql-bin.000022
000022
06:57:15: - finding the last binlog file
19 <-- Output af $NEW

  • Log ind eller opret dig for at tilføje kommentarer

# 3

8 år 9 måneder siden

Permalink

Indsendt af ejvindh den 26. april 2017 kl. 09:29

Permalink

Virker dette bedre? (jeg

Virker dette bedre? (jeg antager at du gerne vil have det ud med de foranstillede '0'-er?)
OUTPUT=`find mysql-* -type f -printf "%T@ %p\n" | sort -n | cut -d' ' -f 2- | tail -n 1`
NEW=`echo $OUTPUT | rev | cut -d'.' -f 1 | rev `
echo $OUTPUT
echo $NEW
echo "$DATE - finding the last binlog file"
NEW=`printf %06d $((10#$NEW+1))`
echo $NEW

  • Log ind eller opret dig for at tilføje kommentarer

# 4

8 år 9 måneder siden

Permalink

Indsendt af peque den 28. april 2017 kl. 07:29

Permalink

Hej Ejvind.
Jeg opdagede

Hej Ejvind.
Jeg opdagede lige at jeg har lavet en fejl/ setup er forkert.
Kort beskrivelse:
SRV01 <-- MySQL server 1 - replikerer SRV02
SRV02 <-- MySQL server 2 - replikerer SRV01

Derfor er det egenligt binlog filen på den Server jeg ønsker navnet på.
Derfor har jeg nu lavet det på følgende måde

Script 1
Kaldes fra SRV02
HOST=192.168.0.16
DB=TestSetup
CHANNEL=testb
DATE="`date +%D_%R:%S`:"
LOG=/var/log/$DATE-replcheck.log

# Starting script
echo "$DATE Moving to MySQL Dir" >> $LOG
cd /var/lib/mysql
echo "$DATE searching for newest Mysql-bin file" >> $LOG
OUTPUT=`ssh $HOST /script/binlog.sh`
FILE=`echo $OUTPUT | rev | cut -d'/' -f 1 | rev `
echo "Newest binlog file from $HOST is: $FILE"

echo "$DATE - Stop, edit and restart MySQL Replication Channel"
mysql -u root -pXXXXX -e "stop slave for channel '$CHANNEL';"
mysql -u root -pXXXXX -e "CHANGE MASTER TO MASTER_LOG_FILE='$FILE',MASTER_LOG_POS=0 for channel '$CHANNEL';"
mysql -u root -pXXXXX -e "start slave for channel '$CHANNEL';"
echo "$DATE Replicationchannel changed" >> $LOG

Scriptet der kaldes fra SRV02 på SRV01:

# Static param
find /var/lib/mysql/mysql-* -type f -printf "%T@ %p\n" | sort -n | cut -d' ' -f 2- | tail -n 1


Sådanne har jeg fået løst problemet således den automatisk retter Replikeringschannel til
  • Log ind eller opret dig for at tilføje kommentarer

Svar søges

GRUB 2.14 introducerer understøttelse af EROFS, forbedringer til Btrfs og LVM 0
KDE Plasma 6.6 tilføjer en funktion, som brugerne har spurgt efter i evigheder 0
Linux i København 12.01.2026: Open source i det offentlige 0
Dansk distro Omarchy 0
KDE overgår indsamlingsmålet for 2025 med rekordstor støtte fra lokalsamfundet 0

Seneste aktivitet

Linux Mint 22.3 - hvornår opdatere? 10
E-mail blues 5
BigLinux 1
Canon-printer: Jeg savner "Ink-Toner Level"-meddelelse 10
billede af nuværende installation 2
mapper 4
LinuxIn live 9
Linux Debian på ekstern HD 4
usb disk *LØST* 2
Pacman kunne erstattes af en anden Rust baseret mulighed 1
Epson skanner software 8
Debian 1
Printer Epson ET-2865 problem 8
Winboat 4
Nu kan man skrive private beskeder 14
Mint på imac 2009 34
Firefox AI 7
Kunstig inteligens 6
Kopiering til min Samsung telefon 9
Installation af programmer 21

© 2026 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !