have 2 variable in echo
Actually, you don't.
Variables are wrapped in curly braces:
NAME=Fred
echo ${NAME}"
What you have are command invocations. Everything inside the "$(" and ")" delimiters is executed as a separate command and the output of that command "returned" as the result of the invocation:
echo "$( pwd )"
I think your intention is to create file path based on the current date and then feed that file path into the du command. So, step by step:
Your file path is:
/backup/db/db_$(date +%F).sql
There can't be any spaces in this generated value (%F returns YYYY-MM-DD), so we don't have to worry about quoting the file path.
"Inserting" this into the du call:
du -hs /backup/db/db_$(date +%F).sql
lastly, invoking this within the "top-level" echo command:
echo "DB-Size $(du -hs /backup/db/db_$(date +%F).sql)" >> /backup/backup.log
Note the placement of the braces - "$(" starts an invocation, ")" ends it. You're invoking two commands, so you need two closing ')'s.
Also note that there are fewer quotes - one to start the string value and another to end it. Because they're double quotes, the shell will expand all the bits inside it, including variables and command invocations - if they were single quotes, it wouldn't do so, treating the whole thing as a string literal.